【发布时间】:2020-04-22 19:23:43
【问题描述】:
我创建了一个测试活动来更新 MyViewModel 中的一些文本。
我想在一个片段中观察这些变化,但是当我使用
MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
它给了我一个与活动中使用的不同的 MyViewModel 实例,这导致我在片段中的 onChanged() 回调没有被调用。
仅当我将相同的片段代码修改为
HomeViewModel homeViewModel = new ViewModelProvider(getActivity()).get(HomeViewModel.class);
片段是否获得与活动相同的 MyViewModel 实例 - 因此成功调用了 onChanged()。
但是,我不确定使用 getActivity() 作为 ViewModelStoreOwner 是否是正确的做事方式,因为我在任何地方的任何示例中都没有看到这一点。我想知道在这种情况下是否应该使用更好的 ViewModelStoreOwner?
【问题讨论】:
标签: android android-fragments android-livedata android-viewmodel