【发布时间】:2019-11-06 22:55:11
【问题描述】:
我正在为 Activity 及其所有片段使用 Single viewModel。
如果必须在所有片段的onActivityCreated 中编写此设置代码,则初始化viewmodel
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(activity!!).get(NoteViewModel::class.java)
}
我正在浏览 Android KTX 扩展页面:(refer here)
我发现我可以像这样初始化视图模型:
// Get a reference to the ViewModel scoped to this Fragment
val viewModel by viewModels<MyViewModel>()
// Get a reference to the ViewModel scoped to its Activity
val viewModel by activityViewModels<MyViewModel>()
所以我在我的 gradle(app) 中添加了以下依赖项:
//ktx android
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.fragment:fragment-ktx:1.0.0'
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
但是当我尝试在我的应用程序中使用 viewModels/activityViewModels 时,他们的引用找不到。
我需要一些关于如何使用这些扩展的帮助,我尝试搜索示例但没有找到任何基本示例。
【问题讨论】:
-
您的 ViewModel 是否带有任何参数,例如存储库或数据库?
-
@IgorGanapolsky 是的。我正在使用在所有片段之间共享的单个 VM。
-
那么你需要一个
ViewModelFactory
标签: android androidx android-jetpack kotlin-android-extensions android-viewmodel