如何在 Activity(不在片段中)中使用 navGraphViewModels
How to use navGraphViewModels in Activity (Not in Fragment)
在 Fragment 中,我们可以使用 ViewModel 作用域来导航 Graph。
private val viewModel: ViewModel by navGraphViewModels(R.id.youNavGraphID)
但是如何在 Activity 中使用 navGraph 范围创建 ViewModel?或者有什么方法可以使 ViewModel 的范围限定为 Activity 中的导航图?我需要在销毁导航图后重新创建 ViewModel 对象实例。
谢谢。
这是一个很晚的答案,但希望对其他人有所帮助。
您可以将 ViewModelProvider 与 NavigationController 的 ViewModelStoreOwner 一起使用。
基本上是这样的:
val myViewModel = ViewModelProvider(
navController.getViewModelStoreOwner(navGraphId),
defaultViewModelProviderFactory
)[MyViewModel::class.java]
在 Fragment 中,我们可以使用 ViewModel 作用域来导航 Graph。
private val viewModel: ViewModel by navGraphViewModels(R.id.youNavGraphID)
但是如何在 Activity 中使用 navGraph 范围创建 ViewModel?或者有什么方法可以使 ViewModel 的范围限定为 Activity 中的导航图?我需要在销毁导航图后重新创建 ViewModel 对象实例。
谢谢。
这是一个很晚的答案,但希望对其他人有所帮助。
您可以将 ViewModelProvider 与 NavigationController 的 ViewModelStoreOwner 一起使用。
基本上是这样的:
val myViewModel = ViewModelProvider(
navController.getViewModelStoreOwner(navGraphId),
defaultViewModelProviderFactory
)[MyViewModel::class.java]