小编Ada*_*tal的帖子

再次为该片段创建ViewModel

我在MainFragment中创建viewmodel:

 @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
   ...
    MainViewModel mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
   ...
}
Run Code Online (Sandbox Code Playgroud)

当用户选择项目然后导航到“详细信息”片段时,此事务将添加到后堆栈。

 getFragmentManager()
                .beginTransaction()
                .replace(R.id.root, Details.newInstance())
                .addToBackStack(null)
                .commit();
Run Code Online (Sandbox Code Playgroud)

当用户在Details片段中按回时,一切正常,但是如果用户在Details片段中旋转设备并按回,则:

  • 为MainFragment创建了ViewModel的新实例
  • 旧实例仍然存在(未调用方法onCleared)

这是ViewModelProviders中的错误吗?如何解决这个问题?我认为应该恢复ViewModel。

android mvvm android-fragments android-architecture-components

6
推荐指数
1
解决办法
3635
查看次数