2014-05-19 82 views
0

我對Android上的物理後退按鈕有疑問/問題。 我想允許使用後退按鈕,但只能從活動#2,這是一個片段,從那裏我只希望它允許後退按鈕返回到前一個片段。Android - 帶有片段和片段活動的onBackPressed問題

這是我的佈局/工作流程:

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

  1. 活性(打開下一個Intent x = new Intent(params);) - >
  2. FragmentActivity(onBackPressed在此處被禁用,選項卡也添加到此處,此FragmentActivity有一個實現ActionBar.TabListener的內部類來處理onTabSelected FragmentTransaction.replace) - >
  3. ListFragmen T(FragmentTransaction確實transaction.replace(參數).addToBackStack(空).commit();) - >
  4. 片段(想在這裏使用物理後退按鈕,但它似乎並沒有啓用)

當FragmentActivity(#2)不禁用onBackPressed方法時,在fragmentActivity之後的任何位置按下後退按鈕只會將應用程序返回到Activity(#1)而不是前一個片段。

所以問題是,我如何從FragmentActivity(#2)啓用onBackPressed,並且只返回到同一個選項卡中的前一個片段?

謝謝。

+2

是否啓用addtobackstack您片段的交易? –

+0

Yeap。 ListFragment(FragmentTransaction does transaction.replace(args).addToBackStack(null).commit();) – TooManyEduardos

回答

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(); 
    } 

} 
+1

好友,如果你要靠近我我今天會給你買午餐。 這工作就像一個魅力。感謝名單! – TooManyEduardos

+0

謝謝你我來自尼泊爾你爲什麼不來這裏度假呢lol –

+2

哦,老兄,我討厭飛機,所以這是一個問題... – TooManyEduardos