1

我环顾四周,发现了这个问题的变体,但所有答案似乎都是丑陋的黑客。有没有简单而正确的方法来实现这一目标?

比如说我有Activity A,它有一个FrameLayout可以一次保存一个片段。可以说,当 Activity 首次启动时,它会加载Fragment AFrameLayoutListView. 当一个项目被选中时,Fragment A它就会启动Fragment B。我目前这样做的方式是简单地隐藏Fragment A然后添加Fragment B,因为这会保留Fragment A的状态。我当然也将此片段事务添加到backstack.

所以现在Fragment A存在于backstack. 现在假设我回到我的 Android 主屏幕并转到另一个应用程序。当我这样做时,Android 系统决定销毁我的应用程序,因为系统需要更多内存。当我导航回我的应用程序时,我应该如何正确恢复当前在后台堆栈中的状态Fragment BFragment A

我不能使用setRetainInstance(),因为它不适用于Fragments放置在 backstack 上。

本质上,我要做的是将backstack应用程序强制关闭之前的状态恢复到完全一样。所以Fragment A应该在backstack(但不显示),并且Fragment B应该当前显示。如果我点击后退按钮,它应该会正确弹出Fragment A.backstack

一些笔记

由于应用程序被强制关闭,它是savedInstanceState != null. 同样的事情也适用于片段。

4

0 回答 0