我有一个活动,有四种类型的片段A,B,C,D
首先,我将在HomeActivity中展示fragA的一个实例 - (FRAGMENT 1)
我将加载一个fragB实例(FRAGMENT 2)(_此事务已添加到backstack中)
我将加载新的fragA实例(FRAGMENT 3)(不是旧版本),(此事务不会添加到backstack中)(因此应该销毁FRAGMENT 2)
现在我按回按钮,这将转到碎片1(因此我认为碎片3将被销毁)
从后台加载和fragment1。在此刻, 我们现在可以假设在backstack中没有片段。(这意味着如果我点击它会关闭应用程序)
现在从这个FRAGMENT 1,我将转到FRAGMENT 4(fragC的实例),(这个交易我将添加到backstack)。
现在我按BackButton,
从理论上讲,它应该加载FRAGMENT 1(fragA的实例)。但FRAGMENT 3(fragA的实例)正在加载。
(我想知道FRAGMENT3是如何进入画面的,它已被移除而未添加到后台堆栈中。)
如果我走得更远,和其他类似的问题就会出现。
这是我在onbackpressed中的代码
@Override
public void onBackPressed() {
if(getSupportFragmentManager().getBackStackEntryCount() > 1){
getSupportFragmentManager().popBackStackImmediate();
}else {
super.onBackPressed();
}
}
答案 0 :(得分:0)
我认为您不需要在onBackPressed
的实施中致电onBackPressed()
。它总是适用于我而无需手动弹出BackStack。 (我在popBackStackImmediately()
做的一件事就是确保关闭NavigationDrawer。)
所以你可能会弹出两次背斜:一次是自动完成,一次是通过调用GameRequestContent
来触发它。切换片段时,这可能会导致一些问题和意外行为。