我环顾四周,发现了这个问题的变化,但所有答案似乎都是难看的黑客。有没有简单而恰当的方法来实现这个目标?
比方说我有Activity A
,其FrameLayout
一次只能容纳一个片段。可以说,当活动首次启动时,会将Fragment A
加载到FrameLayout
,其中包含ListView
。在Fragment A
中选择某个项目后,它会启动Fragment B
。我目前这样做的方法是隐藏Fragment A
,然后添加Fragment B
,因为这会保留Fragment A
的状态。我当然也将此片段事务添加到backstack
。
现在Fragment A
上存在backstack
。现在说我回到我的Android主屏幕并转到另一个应用程序。当我这样做时,Android系统决定销毁我的应用程序,因为系统需要更多内存。当我导航回我的应用程序时,我应该如何正确地恢复当前在backstack上的Fragment B
和Fragment A
的状态。
我无法使用setRetainInstance()
,因为它不适用于放置在靠后堆上的Fragments
。
基本上我要做的是将backstack
恢复到我强行关闭应用程序之前的状态。因此Fragment A
应该在backstack
上(但不会显示),Fragment B
当前应该显示。如果我点击后退按钮,它应该Fragment A
正确地弹出backstack
。
一些注释
由于应用程序被强制关闭,它是savedInstanceState != null
。碎片也是如此。