我在 MainFragment 中创建视图模型:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
...
MainViewModel mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
...
}
当用户选择项目然后导航到详细信息片段时,此事务将添加到后台堆栈。
getFragmentManager()
.beginTransaction()
.replace(R.id.root, Details.newInstance())
.addToBackStack(null)
.commit();
当用户在详细信息片段中按回时,一切正常,但如果用户在详细信息片段中旋转设备并按回:
- 为 MainFragment 创建 ViewModel 的新实例
- 旧实例仍然存在(未调用方法 onCleared)
这是 ViewModelProviders 中的错误吗?如何解决这个问题?在我看来,应该恢复 ViewModel。