Android 片段之间的ShareViewModel

Android 片段之间的ShareViewModel,android,kotlin,viewmodel,koin,Android,Kotlin,Viewmodel,Koin,我有一个单一的活动应用程序,有下一个问题。我的一个屏幕(我们称之为片段A)有一个小的viewpager(大约片段A大小的一半),有两个片段:B和C。片段B和C的内容取决于A的内容,因为它是动态的。片段A有一个viewModel,它有一些我需要在片段B中使用的id。所以我想使用sharedviewmodel来获得这个值,如下所示: 片段A: viewModel.loadData() 片段B: viewModel.observesomedata.observe(...) 所以问题是在片段B中初始

我有一个单一的活动应用程序,有下一个问题。我的一个屏幕(我们称之为片段A)有一个小的viewpager(大约片段A大小的一半),有两个片段:B和C。片段B和C的内容取决于A的内容,因为它是动态的。片段A有一个viewModel,它有一些我需要在片段B中使用的id。所以我想使用sharedviewmodel来获得这个值,如下所示: 片段A:

viewModel.loadData()
片段B:

viewModel.observesomedata.observe(...)
所以问题是在片段B中初始化SharedViewModel时,编译器说“惰性值尚未初始化”
有什么建议吗?

为什么不初始化ViewModel的
init
块中的数据?那么您就不必依赖于调用某些
loadData()
函数,也不必使用
lateinit var
s.@Tenfour04您能提供一些示例吗?我没法得到你的答案这能回答你的问题吗?我建议将
loadData()
函数的内容移动到ViewModel类的初始化块(构造函数)中,以确保始终加载它。如果希望所有片段共享ViewModel的同一实例,请使用activityViewModels()而不是viewModels()来获取引用。活动不必知道它,但是所有片段都在使用活动来获取相同的视图模型实例。