当我们使用 navGraphViewModels 时,我们能否在父 Activity 中获得相同的 ViewModel 实例?
Can we get same instance of ViewModel inside parent Activity when we use navGraphViewModels?
我有一个片段容器视图来加载三个以上的片段,每个片段都由 ViewModel 使用 navGraphViewModels 共享
private val viewModel: HomeViewModel by navGraphViewModels(R.id.home_navigation_xml) { defaultViewModelProviderFactory }
我们如何在父 activity 中获取相同的 ViewModel 实例?
我用下面的方法解决了我的问题。
val viewModel by lazy {
binding?.homeFragmentContainerView?.findNavController()
?.getViewModelStoreOwner(R.id.home_navigation_xml)?.viewModelStore?.let {
ViewModelProvider(
it,
ViewModelProvider.AndroidViewModelFactory.getInstance(application)
).get(HomeViewModel::class.java)
}
}
我有一个片段容器视图来加载三个以上的片段,每个片段都由 ViewModel 使用 navGraphViewModels 共享
private val viewModel: HomeViewModel by navGraphViewModels(R.id.home_navigation_xml) { defaultViewModelProviderFactory }
我们如何在父 activity 中获取相同的 ViewModel 实例?
我用下面的方法解决了我的问题。
val viewModel by lazy {
binding?.homeFragmentContainerView?.findNavController()
?.getViewModelStoreOwner(R.id.home_navigation_xml)?.viewModelStore?.let {
ViewModelProvider(
it,
ViewModelProvider.AndroidViewModelFactory.getInstance(application)
).get(HomeViewModel::class.java)
}
}