返回片段时,内部数据绑定回调为null(onResume)

时间:2017-06-09 08:19:41

标签: android android-fragments mvvm data-binding

我们有一个设置,我们使用BaseObservable ViewModel设置为通过xml在数据绑定层上的变量。

我们的情况是Fragment显示项目列表。此片段会启动Activity trough startActivityForResult来编辑此列表。返回时,我们更新ViewModel中的onResume(这有效),但不会触发数据绑定内部回调。我们在xml中设置的绑定(类似于@{viewModel.isLoading})不再被执行,即使调用了notifyPropertyChanged

在调试时,我们发现绑定对象在离开片段之前包含了WeakReference$OnPropertyChangedCallback的广泛列表,这些是数据绑定框架使用的内部回调。回到碎片后,这些都被处理掉了,这是有道理的,因为它们是一个弱引用。

这应该发生吗?如果是这样,我如何确保回调被反弹到我的绑定对象?

供参考一个小的伪代码样本:

在片段onCreate中:

mViewModel = ViewModelProviders.of(getActivity()).get(TGMyNewsViewModel.class);

在片段onCreateView中:

mBinding = FragmentMyNewsBinding.inflate(inflater, container, false);
mBinding.setViewModel(mViewModel);

onActivityResult中,当我们确认某些内容发生了变化时:

mViewModel.startViewModel();

这会触发重新加载,此重新加载正在成功完成。

然后,ViewModel中的属性更改不会更新实际布局。

0 个答案:

没有答案