【问题标题】:How to share ViewModel between Parent fragment and fragment inside child fragment如何在父片段和子片段内的片段之间共享 ViewModel
【发布时间】:2021-01-21 06:43:27
【问题描述】:

我有包含子片段的父片段。在子片段内部,我有带有片段的 ViewPager。我的问题是如何在 viewpager 中的父子和片段之间共享 ViewModel 并使 Viewmodel 仅在 ParentFragment 范围内可见?

【问题讨论】:

标签: android android-viewmodel


【解决方案1】:

您说“仅在 ​​ParentFragment 范围内可见”是什么意思?

根据 Google 的文档,您可以通过一种方式共享 ViewModel。 查看此文档:https://developer.android.com/topic/libraries/architecture/viewmodel#sharing 很快,您的父片段和子片段将使用相同的 ViewModel。你的父fragment会调用ViewModel的函数来改变数据,你的子fragment只是观察ViewModel的LiveData。

【讨论】:

  • 我的子片段和父片段使用相同的模型。但是如何在 ViewPager 的片段中使用相同的模型
  • 你是否尝试使用“by activityViewModels()”在ViewPager的fragment中获取共享的ViewModel?
【解决方案2】:

您可以将 sharedViewModel 放在 Activity 中。然后,您可以使用此代码从附加到此活动的每个片段中访问它:

(requireActivity() as MainActivity).viewModel;

使用这种方法,您可以设置来自一个片段的数据并观察来自另一个片段的数据。因此,您启用了两个片段之间的通信。

设置数据:

viewModel.liveDataObject.value = value

观察数据:

viewModel.liveDataObject.observe(viewLifecycleOwner) {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-13
    • 2020-07-31
    • 1970-01-01
    • 2022-08-16
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多