【发布时间】:2022-11-10 00:09:31
【问题描述】:
我有一个 Fragment0,其中包含一个 ViewPager2,它内部可能包含 1 个或多个子 Fragment。
我创建了一个 SharedViewModel 并在 Parent 片段中定义它,如下所示:
val viewModel by viewModels<SharedViewModel>()
我还在每个子片段中添加了 viewModel 的定义。
private val sharedViewModel by viewModels<SharedViewModel>(
ownerProducer = { requireParentFragment() }
)
我使用 NavigationControl 从每个子片段导航到 Fragment4。片段 1、片段 2 和片段 3。我的问题是,我如何与不直接属于 Fragment0 的 Fragment4 共享相同的视图模型。我也可以使用相同的方法与 Fragment4 共享 viewModel 吗?
还是有更好的方法来处理这样的用例?
【问题讨论】:
-
尝试在片段中使用 Dagger hilt 进行 ViewModel 注入。
-
Fragment4 是否显示在与 Fragment0 相同的活动中?
-
对我来说,如果我使用... ownerProducer = { requireParentFragment() }... 在 viewpager 内的片段中初始化 viewmodel... 我会崩溃。它说,viewpager 内的片段不是子片段,它直接附加到活动。我只有一个活动。对你起作用吗?
标签: android kotlin android-fragments viewmodel android-viewmodel