我正在为 Activity 及其所有 fragment 使用 Single viewModel。
所以要初始化 viewmodel
如果必须在所有 fragment 的 onActivityCreated
中编写此设置代码
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(activity!!).get(NoteViewModel::class.java)
}
我正在浏览 Android KTX 扩展页面:( refer here )
我发现我可以像这样初始化 View 模型:
// 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
时,找不到它们的引用。
我需要有关如何将这些扩展与一些基本示例一起使用的帮助,我尝试搜索示例但未找到任何示例。
最佳答案
终于有了稳定版。
在移动到implementation 'androidx.fragment:fragment-ktx:1.1.0'
之后,我遇到了另一个问题。
###编译器错误:
Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6
###build.gradle(模块:应用程序)
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
kotlinOptions {
jvmTarget = "1.8"
}
应用以上所有内容后,问题就解决了。
关于android - 如何通过viewModels获取viewModel? ( fragment -ktx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56748334/