从Fragment处理OnBackPress

时间:2018-02-01 12:35:58

标签: android android-fragments fragment-backstack

我有3个片段Fragment1,Fragment2和Fragment3,导航就像

  

Fragment1-> Fragment2-> Fragment3

但是在背面按下Fragment3,在完成Fragment2之类的任务之后回到Fragment2。并从Fragment1完成此活动。

执行此任务的最佳方法是什么。

3 个答案:

答案 0 :(得分:2)

请按照流程操作。  1.在代码中添加代码下面的片段添加

fragmentTransaction.addToBackStack(null);
  1. 然后从活动中返回按钮句柄。

    @Override
    public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount()>0){
        getFragmentManager().popBackStack();
    }else {
        super.onBackPressed();
    } }
    
  2. 它将完美运作。快乐的编码。

答案 1 :(得分:2)

根据您的问题,您只需在addToBackStack()交易之前添加commit()方法。

例如:

FirstFragment firstFragment = new FirstFragment();
getSupportFragmentManager().beginTransaction()
    .replace(R.id.article_fragment, firstFragment)
    .addToBackStack(null).commit();

添加与上述方式相同的第二个和第三个片段,只需在onBackPressed()覆盖方法中添加代码。

例如:

@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
    } 
}

答案 2 :(得分:1)

无需在OnBackPress内处理Fragment。执行Fragment交易时,您可以将您的片段设为BackStack

  

当后台堆栈上有FragmentTransaction对象并且用户按下后退按钮时,FragmentManager会从后台堆栈中弹出最近的事务并执行相反的操作(例如,如果事务添加了片段,则删除片段)。 / p>

您可以从此article获取更多详细信息。