Qed*_*rix 5 android viewmodel android-fragments kotlin android-viewmodel
我有一个 Fragment0,其中包含一个 ViewPager2,该 ViewPager2 内部可能包含 1 个或多个子片段。
我创建了一个 SharedViewModel 并在 Parent 片段中定义它,如下所示:
val viewModel by viewModels<SharedViewModel>()
Run Code Online (Sandbox Code Playgroud)
我还在每个子片段中添加了 viewModel 的定义。
private val sharedViewModel by viewModels<SharedViewModel>(
ownerProducer = { requireParentFragment() }
)
Run Code Online (Sandbox Code Playgroud)
我使用 NavigationControl 从每个子片段即导航到 Fragment4。片段 1、片段 2 和片段 3。我的问题是,如何与 Fragment4 共享相同的视图模型,它不是 Fragment0 的直接子级。我可以使用相同的方法与 Fragment4 共享 viewModel 吗?
或者有更好的方法来处理这样的用例吗?
您只能用于by viewModels({requireParentFragment()})与父片段和子片段共享视图模型。它不适用于fragment4。
您可以使用by activityViewModels()。但这不是好的架构。我建议您为 Fragment4 创建单独的视图模型并与导航共享数据。
从这里找到更多信息: https: //developer.android.com/guide/fragments/communicate
| 归档时间: |
|
| 查看次数: |
1558 次 |
| 最近记录: |