如何使用片段处理backPress

has*_*ash 6 android android-fragments

我有片段活动与contatin导航抽屉.点击导航抽屉项后,它打开片段1,片段2,片段3.然后在片段1中按钮点击事件后打开新的片段4.

我想要处理后退按键事件我怎样才能在片段4上执行此操作?在片段4中单击后退键后我想返回片段1.

在此输入图像描述

san*_*ram 20

将碎片添加到BackStack.在commit()事务之前,使用addToBackStack()方法即

 addToBackStack("Some String").commit();
Run Code Online (Sandbox Code Playgroud)

并在onBackPressed()

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
        getSupportFragmentManager().popBackStack(); 
    } else { 
        this.finish(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在Activity onBackPressed()方法if(fm.getBackStackEntryCount()> 0){pop the fragment} else {super.onBackPressed();} (5认同)
  • @Sameera答案更新,现在接受它,谢谢 (2认同)

小智 5

将片段添加到backstack的代码应该是这样的:

getFragmentManager() .beginTransaction() .replace(R.id.content_frame, Entry_Account.newInstance(), Entry_Account.TAG).addToBackStack("Some string") .commit();
Run Code Online (Sandbox Code Playgroud)

然后在On Activity的onBackPressed方法中,使用以下代码段:

@Override
public void onBackPressed () {
if(getFramentManager().getBackStackEntryCount()>0){
      // popback statck.
}
 else{
     // finish your activity.
 }
}
Run Code Online (Sandbox Code Playgroud)