我有一个 Activity 和四种类型的片段 A、B、C、D
首先,我将在 HomeActivity 中展示 fragA 的一个实例 - (FRAGMENT 1)
从 FRAGMENT1 我将加载一个 fragB(FRAGMENT 2)(_this transaction added to backstack)的实例
从片段 2 我将加载 fragA 的新实例(片段 3)(不是旧的),(此事务未添加到后台堆栈)(所以片段 2 应该被销毁)
现在我将按下后退按钮,这将转到 FRAGMENT 1(所以 FRAGMENT 3 将按照我的想法被销毁)
并加载来自 backstack 的 fragment1。在这一点上,我们可以假设现在 backstack 中没有片段。(这意味着如果我点击返回它会关闭应用程序)
现在从这个 FRAGMENT 1,我将转到 FRAGMENT 4(fragC 的实例),(这个事务我将添加到 backstack)。
现在我将按下 BackButton,
现在理论上,它应该加载 FRAGMENT 1(fragA 的实例)。但片段 3(fragA 的实例)正在加载。
(我想知道 FRAGMENT3 是怎么出现的,它被删除了,没有添加到 backstack 中)。
如果我走得更远,其他类似的问题就会出现
这是我在 onbackpressed 中的代码
@Override
public void onBackPressed() {
if(getSupportFragmentManager().getBackStackEntryCount() > 1){
getSupportFragmentManager().popBackStackImmediate();
}else {
super.onBackPressed();
}
}