【发布时间】:2016-03-04 13:28:00
【问题描述】:
我有一个Activity,A、B、C、D四种片段
-
首先我将在 HomeActivity 中显示 fragA 的一个实例 - (FRAGMENT 1)
-
我将从 FRAGMENT1 加载一个 fragB(FRAGMENT 2)(_this transaction added to backstack)的实例
-
从 FRAGMENT 2 我将加载 fragA(FRAGMENT 3) 的新实例(不是旧实例),(此事务未添加到 backstack)(因此应该销毁 FRAGMENT 2)
-
现在我将按下返回按钮,这将转到 FRAGMENT 1(所以我认为 FRAGMENT 3 将被销毁)
并加载来自 backstack 的 fragment1。在此刻, 我们现在可以假设 backstack 中没有碎片。(这意味着如果我点击返回它会关闭应用程序)
-
现在从这个 FRAGMENT 1,我将转到 FRAGMENT 4(fragC 的实例),(这个事务我将添加到 backstack)。
-
现在我将按下返回按钮,
-
现在理论上,它应该加载 FRAGMENT 1(fragA 的实例)。但 FRAGMENT 3(fragA 的实例)正在加载。
(我想知道 FRAGMENT3 是怎么出现的,它被删除并没有添加到 backstack)。
如果我走得更远,其他类似的问题就会出现
这是我在 onbackpressed 中的代码
@Override
public void onBackPressed() {
if(getSupportFragmentManager().getBackStackEntryCount() > 1){
getSupportFragmentManager().popBackStackImmediate();
}else {
super.onBackPressed();
}
}
【问题讨论】:
-
是的,我曾经遇到过同样的问题。正如我在背压上记得的那样,您应该在添加或替换新的之前删除片段事务。交易.删除...
-
这样行得通吗?还是不?
-
你可能做错了地方。
-
你能告诉我在哪里做,怎么做
-
显示你加载新片段的代码
标签: android android-fragments fragment-backstack