在活动及其片段之间共享视图模型不会在活动中调用可观察到的

时间:2019-06-04 13:44:57

标签: android mvvm

我正在使用视图寻呼机。我已经为我的活动和视图分页器中的片段创建了共享视图模型。问题是当我在视图模型中设置MutableLiveData值时,活动中的观察者未得到调用。

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

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

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

  4.   

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

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

2 个答案:

答案 0 :(得分:1)

我想出了解决方案。我正在活动和片段中创建可观察对象的新实例。导致片段中创建的实例被调用,而我在活动中观察的可观察对象的实例在片段创建时被替换了。

答案 1 :(得分:0)

我为每个片段使用不同的视图模型,为活动使用一个视图模型,因为每个片段的责任不同,应该分开,因此我将创建一个不同的视图模型。如果要使用相同的控件,则可以使用捆绑包将视图模型从活动传递到片段