当我们使用 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)
                }
        }