我在MainFragment中创建viewmodel:

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

当用户选择项目然后导航到“详细信息” fragment 时,此事务将添加到后堆栈。
 getFragmentManager()
                .beginTransaction()
                .replace(R.id.root, Details.newInstance())
                .addToBackStack(null)
                .commit();

当用户在Details fragment 中按回时,一切正常,但是如果用户在Details fragment 中旋转设备并按回,则:
  • 为MainFragment创建了ViewModel的新实例
  • 旧实例仍然存在(方法onCleared未调用)

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

    最佳答案

    这是一个已确认的问题。该修补程序在AndroidX 1.0.0-alpha2版本中可用。
    https://issuetracker.google.com/issues/73644080

    10-06 09:43