如何注入 hilt viewModel 以在多个导航图中与新鲜状态一起使用

How to inject hilt viewModel to be used with fresh state in multiple navgraphs

问题: 我有一个父片段,它创建了单个导航图的 1-4 个拆分(平板电脑的拆分屏幕)。我有一个全局 ViewModel,我希望它只能在其中一个片段中共享。所以每个拆分都有一个全局 viewModel

如果我使用 @InstallIn(ActivityRetainedComponent::class)

@Provides
@ActivityRetainedScoped

我得到了一个 ViewModel 在各个部分之间共享。见图

如果我删除 @ActivityRetainedScoped 每个片段都有自己的 ViewModel。见图

我想要的:

每件作品都创建自己的父 ViewModel。见绿色图片activity

我只想出了 2 个不同的丑陋解决方案。可能有效:

Ps。不在图片中。连接到每个片段的是一个片段视图模型。这些片段与全局 ViewModel

对话

我使用嵌套图解决了这个问题。

 private val viewModel: NameOfYourViewModel by navGraphViewModels(R.id.nameOfYourFragment)