当我们只有一个片段时处理"反向压"



我有一个Activity,它只有一个Fragment。我想处理backpressed功能。当用户按回键时,程序应返回到Activity。我知道这很简单,但是我已经尝试了一些在Stackoverflow上提到的解决方案,但没有一个奏效。例如,我尝试了这个:

public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();
if (count == 0) {
super.onBackPressed();
//additional code
} else {
getFragmentManager().popBackStack();
}
}

据我了解,您要做的就是当用户按MainActivity上的返回键时

  • 如果后堆中有超过 1 个片段,只需弹出片段
  • 如果后退堆栈中只有 1 个片段,则第一次后按将被忽略,并且您希望运行一些其他代码。然后,如果用户再次按返回键,您的MainActivity将完成。

将代码更改为

private boolean ignoredFirstBackPressed = false;
@Override
public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();
if (count == 1) {
// If there is only one fragment in back stack
if (!ignoredFirstBackPressed) {
// additional code
ignoredFirstBackPressed = true;
} else {
finish();
}
} else {
getFragmentManager().popBackStack(); // or super.onBackPressed()
}
}

你的代码似乎是正确的。您是否使用addToBackStackFragment添加到后退堆栈?看看这个问题。它和你的相似。

最新更新