我正在尝试遵循Android最佳做法并使用推荐的最新架构组件。到目前为止,您可以看到我的尝试:https : //github.com/randroid88/TodayILearned
目前,该应用程序的功能非常有限。
问题是只有HomeFragment现在可以访问EntryViewModel。
因此,在我目前的设计中,我通过一个参数束从EntryEditorFragment新条目文字传递给HomeFragment(使用SafeArgs从新导航建筑构件),然后HomeFragment创建通过EntryViewModel新条目:
val safeArgs = HomeFragmentArgs.fromBundle(arguments!!)
savePossibleNewEntry(safeArgs.entryText)
private fun savePossibleNewEntry(entryText: String) {
entryViewModel!!.insert(EntryCreator().create(entryText))
}
这感觉不对。
如果EntryViewModel也可以访问EntryEditorFragment会更好吗?
为了做到这一点,我是否必须将ViewModel的范围限定在Activity上,如本博客中此处所述?
这里的最佳做法是什么?
在Android文档建议共享视图模型的“主-片段的常见情况”,所以我决定把我的情况下这样做。
如建议的那样,我在两个片段中将ViewModel的作用域限定为Activity:
entryViewModel = activity?.run {
ViewModelProviders.of(this, EntryViewModelFactory(this.application, EntryRepository(this.application))).get(EntryViewModel::class.java)
} ?: throw Exception("Invalid Activity")
这是我进行更改的提交:https : //github.com/randroid88/TodayILearned/commit/e307bd3f238e68a399a2a1619438770d908a606d
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句