Android后退按钮和片段活动

时间:2017-05-15 09:41:05

标签: android android-fragments

我有一个使用片段的活动,当首次创建活动时,它会显示第一个片段,该片段未添加到后台,因为我不希望在用户按下时有空活动。

之后加载的片段被添加到后栈。

所以我有我想要的行为,除了:用户可以打开片段然后按回去回到上一个片段,直到它们到达第一个片段,因为如果他们此时按下,则活动关闭,我不想要。

所以我想知道一个很好的解决方案,以防止按下后退按钮,但只有在显示第一个片段时。

3 个答案:

答案 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);
  }
}
希望这有帮助。