繁体   English   中英

在活动上保存/恢复片段堆栈已损坏

[英]save/restore fragment stack on Activity destroyed

在我的项目中,有活动和片段。 而且有一个Fragment堆栈。

我的问题是在操作系统破坏Activity的情况下如何保存/恢复片段堆栈。


@forcewill谈谈addToBackStack吗? 是的,我做到了。 我不是在谈论弹出的最上面的片段,以防后按。 我说的是在活动被破坏的情况下恢复片段堆栈。


@Derek,我确实按照您的方式将以下内容写入每个片段和活动,以覆盖onStaveInstanceState(...)

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

但似乎仍然无法正常工作。

我已经测试过-具有Android 4.1的Galaxy S3-具有Android 5.1的模拟器(打开名为“请勿继续活动”的调试选项)


@josedlujan,这与保存单个Fragment实例无关,而与将片段保存在堆栈中有关。

使用savedInstanceState

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    ...
    if (savedInstanceState != null) {
        //Restore the fragment's state here
    }
}
...
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

//Save the fragment's state here



}

冯德烈是正确的。 只要将片段添加到Backstack,片段Backstack就会由系统维护。

我很愚蠢,我在活动的onResume / onCreate中做了一些操作,这导致清理已还原的片段回栈。

关闭这个

我怎么犯了愚蠢的错误


public class MyActivity {
    ....
    onResume() {
        bottomBar.setDefaultIfNotSet();
    }
    ....
}

onResume中的方法将清除Fragment Backstack。 在BottomBar中,我没有保存活动销毁状态。 因此,在还原“活动”时,该视图不知道它实际上是“不是从头开始创建的”还原的

谢谢德里克和其他人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM