Android - 与Fragments和FragmentActivity的onBackPressed问题

时间:2014-05-19 15:39:16

标签: android android-fragments

我对Android上的物理后退按钮有疑问/问题。 我想允许使用后退按钮,但只允许来自活动#2,这是一个片段,从那里我只希望它允许后退按钮返回到前一个片段。

这是我的布局/工作流程:

(#1)活动 - > (#2)FragmentActivity - > (#3)ListFragment - > (#4)片段

  1. 活动(从Intent x打开下一个活动x = new Intent(params);) - >
  2. FragmentActivity(此处禁用onBackPressed。此处还添加了Tabs,此FragmentActivity有一个实现ActionBar.TabListener的内部类来处理onTabSelected FragmentTransaction.replace) - >
  3. ListFragment(FragmentTransaction执行transaction.replace(args).addToBackStack(null).commit();) - >
  4. 片段(想在这里使用物理后退按钮,但似乎没有启用)
  5. 当FragmentActivity(#2)没有禁用onBackPressed方法时,在fragmentActivity将应用程序返回到Activity(#1)而不是之前的片段后,将后退按钮推回到任何位置。

    所以问题是,如何仅从FragmentActivity(#2)启用onBackPressed并仅返回同一选项卡中的上一个片段?

    谢谢。

1 个答案:

答案 0 :(得分:1)

不确定这会有效但是试试这个:

@Override
public void onBackPressed() {
    FragmentManager fm = getSupportFragmentManager();
    Log.d("length out", "" + fm.getBackStackEntryCount());
    if (fm.getBackStackEntryCount() > 2) {
        //do nothing you are on other fragments according to your work flow
    } else {
        // you are in your activity two or one so pop the fragment
        fm.popBackStack();
    }

}