在backstack上保存和恢复片段状态的正确方法?

时间:2013-07-27 17:40:44

标签: android

我环顾四周,发现了这个问题的变化,但所有答案似乎都是难看的黑客。有没有简单而恰当的方法来实现这个目标?

比方说我有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 BFragment A的状态。

我无法使用setRetainInstance(),因为它不适用于放置在靠后堆上的Fragments

基本上我要做的是将backstack恢复到我强行关闭应用程序之前的状态。因此Fragment A应该在backstack上(但不会显示),Fragment B当前应该显示。如果我点击后退按钮,它应该Fragment A正确地弹出backstack

一些注释

由于应用程序被强制关闭,它是savedInstanceState != null。碎片也是如此。

0 个答案:

没有答案