再次为该片段创建ViewModel [英] ViewModel is created again for the fragment

查看:65
本文介绍了再次为该片段创建ViewModel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆