fragment1
当我的应用程序启动时,我在事务中将片段实例(例如,newInstance(List<Obj>)
这个片段显示了一些通过静态方法传递给它的缓存数据。在onSaveInstanceState()
我保存数据时,如果重新创建片段,我可以显示它。
现在假设我不重新创建片段。假设我用第二个片段替换它,比如说,fragment2
(这次将事务添加到后台堆栈),执行两次屏幕旋转,然后按回。该应用程序将弹出返回堆栈并尝试fragment1
再次显示,然后将尝试显示List<Obj>
哪个将null
被NullPointerException
抛出。
我知道这是因为该fragment1
实例从未被保存过,因为它不在后台堆栈中,并且在设备旋转时也没有显示。
我的问题是,在这种情况下支持屏幕旋转的最合适的方式是什么?我可以将初始事务保存在后端堆栈中,并在弹出后端堆栈之前onBackPressed()
验证这一点getSupportFragmentManager().getBackStackEntryCount() >= 1
(我不希望弹出初始事务,因为这fragment1
是我的初始屏幕),但我认为这不是正确的方法。有任何想法吗?