我有一个使用片段的活动,当首次创建活动时,它会显示第一个片段,该片段未添加到后台,因为我不希望在用户按下时有空活动。
之后加载的片段被添加到后栈。
所以我有我想要的行为,除了:用户可以打开片段然后按回去回到上一个片段,直到它们到达第一个片段,因为如果他们此时按下,则活动关闭,我不想要。
所以我想知道一个很好的解决方案,以防止按下后退按钮,但只有在显示第一个片段时。
答案 0 :(得分:4)
从活动中调用新片段时添加.addToBackStack(null)。
FragmentTransaction mFragmentTransaction = getFragmentManager()
.beginTransaction();
....
mFragmentTransaction.addToBackStack(null);
- 将onBackPressed()添加到您的活动
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() == 0) {
this.finish();
}
else {
getFragmentManager().popBackStack();
}
}
答案 1 :(得分:2)
像这样解决:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount()> 0) {
super.onBackPressed();
}
}
答案 2 :(得分:2)
在您的活动类中,在onBackPressed方法中添加以下代码;
@Override
public void onBackPressed() {
int backstack = getSupportFragmentManager().getBackStackEntryCount();
if (backstack > 0) {
getSupportFragmentManager().popBackStack();
}
else{
super.onBackPressed();
//System.exit(0);
}
}
希望这有帮助。