问题描述
我遵循Flow教程中的编码。在其中一个(使用共享ViewModel的2个片段之间进行通信,有一个废弃的方法ViewModelProviders.of(...:
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
viewModel.getText().observe(getViewLifecycleOwner(),new Observer<CharSequence>() {
@Override
public void onChanged(@Nullable CharSequence charSequence) {
editText.setText(charSequence);
}
});
}
作者解释说,应用程序知道何时销毁并重新创建ViewModel,因此我们不应该这样做。我找到了一种方法,该方法可以代替已废弃的ViewModelProviders:
//myNewMethod
viewModel= ViewModelProvider.AndroidViewModelFactory.getInstance(getActivity().getApplication()).create(SharedViewModel.class);
现在的问题是,此方法始终创建Shared ViewModel的新实例。因此,当我有两个片段时,该方法将被调用两次并生成两个不同的共享ViewModel!
如何摆脱这种情况,我应该在哪里实例化Shared ViewModel?主要活动还是仍然支离破碎?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)