我正在尝试遵循 Android 最佳实践并使用最新推荐的架构组件。到目前为止,您可以在这里看到我的尝试:https ://github.com/randroid88/TodayILearned
目前该应用程序的功能非常有限。
- 它有一个 Room db 用于本地存储日记帐分录。
- 一个片段HomeFragment列出了所有条目
- 另一个片段EntryEditorFragment用于创建新条目。
- 一个 ViewModel, EntryViewModel,它通过存储库更新数据。
问题是现在只有 HomeFragment 可以访问 EntryViewModel。
因此,在我当前的设计中,我通过参数包(使用新导航架构组件中的 SafeArgs)将新条目文本从 EntryEditorFragment 传递给 HomeFragment ,然后 HomeFragment 通过 EntryViewModel 创建新条目:
val safeArgs = HomeFragmentArgs.fromBundle(arguments!!)
savePossibleNewEntry(safeArgs.entryText)
private fun savePossibleNewEntry(entryText: String) {
entryViewModel!!.insert(EntryCreator().create(entryText))
}
这感觉不对。
如果 EntryViewModel 也可以访问 EntryEditorFragment 会更好吗?
为了做到这一点,我是否必须将 ViewModel 限定为 Activity,如本博客中所述?
这里的最佳做法是什么?