【问题标题】:Sharing view models between activity and its fragment is not calling observable in the activity在活动及其片段之间共享视图模型不是在活动中调用可观察的
【发布时间】:2019-10-20 01:31:31
【问题描述】:

我正在使用视图寻呼机。我为我的活动和视图寻呼机中的片段创建了一个共享视图模型。问题是当我在视图模型中设置 MutableLiveData 值时,活动中的观察者不会被调用。

我使用以下几行来初始化我的视图模型

  1. 在活动中:viewModel = ViewModelProviders.of(this).get(MyViewModel.class);

  2. 在片段中:viewModel = ViewModelProviders.of(getActivity()).get(MyViewModel.class);

在调试时,我发现我的活动观察者在片段的 onCreated 上被删除。

据我所知,片段和活动应该具有相同的视图模型实例。

【问题讨论】:

  • 我们需要更多代码,理想情况下足以最小化重现问题。您是否尝试过将第一个从of(this) 更改为of(getActivity),如示例代码developer.android.com/topic/libraries/architecture/…
  • 第一个是活动本身。
  • 不知道,抱歉,有人在这里写过 medium.com/mindorks/…
  • 感谢您的帮助。我找到了答案,这只是一个愚蠢的错误。我将删除这个问题,因为它在这里没有帮助。
  • 你也可以自己回答这个问题,没有问题是愚蠢的,它可能会帮助其他做同样事情的人

标签: android mvvm


【解决方案1】:

我为每个片段和一个活动使用不同的视图模型,因为每个片段的责任不同并且应该分开,所以我会创建一个不同的视图模型。如果您想使用相同的,也许您可​​以使用捆绑包将视图模型从活动传递到片段

【讨论】:

    【解决方案2】:

    我想出了解决办法。我在活动和片段中创建了一个可观察的新实例。这导致在片段中创建的实例被调用,而我在 Activity 中观察到的可观察对象的实例在片段创建时被替换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-07
      • 2016-11-19
      • 2020-12-05
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      相关资源
      最近更新 更多