再次为该片段创建ViewModel [英] ViewModel is created again for the fragment
问题描述
我在MainFragment中创建viewmodel:
I create viewmodel in MainFragment:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
...
MainViewModel mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
...
}
当用户选择项目然后导航到"Details"(详细信息)片段时,此事务将添加到Backstack.
When user select item then navigate to Details fragment, this transaction is added to backstack.
getFragmentManager()
.beginTransaction()
.replace(R.id.root, Details.newInstance())
.addToBackStack(null)
.commit();
当用户在详细信息"片段中按回时,一切正常,但是如果用户在详细信息"片段中旋转设备并按回退,则:
When user press back in Details fragment, everything is ok, but if user rotate device in Details fragment and press back then:
- 为MainFragment创建了ViewModel的新实例
- 旧实例仍然存在(未调用onCleared方法)
这是ViewModelProviders中的错误吗?如何解决这个问题? 我认为ViewModel应该恢复.
Is this a bug in ViewModelProviders? How to fix this? In my opinion ViewModel should be restored.
推荐答案
这是一个已确认的问题.该修补程序在AndroidX 1.0.0-alpha2版本中可用. https://issuetracker.google.com/issues/73644080
This is a confirmed issue. The fix is available in the AndroidX 1.0.0-alpha2 release. https://issuetracker.google.com/issues/73644080
这篇关于再次为该片段创建ViewModel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!