我有一个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()
}
}
你的代码似乎是正确的。您是否使用addToBackStack
将Fragment
添加到后退堆栈?看看这个问题。它和你的相似。