如何注入 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 个不同的丑陋解决方案。可能有效:
- 在父片段中创建 ViewModel。并以某种方式传递它。
- 与全局父级对话时传递片段的索引
Ps。不在图片中。连接到每个片段的是一个片段视图模型。这些片段与全局 ViewModel
对话
我使用嵌套图解决了这个问题。
private val viewModel: NameOfYourViewModel by navGraphViewModels(R.id.nameOfYourFragment)
问题: 我有一个父片段,它创建了单个导航图的 1-4 个拆分(平板电脑的拆分屏幕)。我有一个全局 ViewModel,我希望它只能在其中一个片段中共享。所以每个拆分都有一个全局 viewModel
如果我使用 @InstallIn(ActivityRetainedComponent::class)
和
@Provides
@ActivityRetainedScoped
我得到了一个 ViewModel 在各个部分之间共享。见图
如果我删除 @ActivityRetainedScoped
每个片段都有自己的 ViewModel。见图
我想要的:
每件作品都创建自己的父 ViewModel。见绿色图片activity
我只想出了 2 个不同的丑陋解决方案。可能有效:
- 在父片段中创建 ViewModel。并以某种方式传递它。
- 与全局父级对话时传递片段的索引
Ps。不在图片中。连接到每个片段的是一个片段视图模型。这些片段与全局 ViewModel
对话我使用嵌套图解决了这个问题。
private val viewModel: NameOfYourViewModel by navGraphViewModels(R.id.nameOfYourFragment)