1>尝试在堆栈保持片段(添加和弹出而要添加新片段)
例如: 私人堆栈fragmentStack =新堆栈();
//代码在堆栈中添加新的片段,在前面的堆栈中添加前一个片段 FragmentTransaction ft = fragmentManager.beginTransaction();
Fragment mFragment = new Fragment(); // you can replace this with your fragment
ft.add(R.id.container, mFragment); // you can also add fragment id so that if you can reuse that fragment if it is memory.
fragmentStack.lastElement().onPause();
ft.hide(fragmentStack.lastElement());
fragmentStack.push(resultListFragment);
ft.commit();
//代码从顶部除去可见片段并恢复回栈片段
如果(fragmentStack.size()== 2)//用于检查是否其是任何片段在堆栈是肯定比onbackbutton事件返回事件{FragmentTransaction ft = fragmentManager.beginTransaction(); fragmentStack.lastElement()。onPause(); ft.remove(fragmentStack.pop()); fragmentStack.lastElement()。onResume(); ft.show(fragmentStack.lastElement()); ft.commit(); }
2>如果以上操作不解决您OutOfMemory错误比片段生命周期的onCreate(捆绑)系统回调方法使用setRetaininstance(真)的问题,所以如果他们已经在内存中它不会产生新的片段。
你应该检查是否有任何强烈的引用FragmentB没有被销毁时释放。如果可能的话,在这里分享你的代码片段,这样每个人都可以给你建议。 – Robo
抱歉,我无法分享我的代码。我在这里创建了像我的流程应用程序这样的示例项目:https://github.com/sinhpn92/FragmentStackTest。 我的样品没有这个问题。但在我的项目中,我有上面的问题。我不知道为什么?这个问题有什么原因吗? –