2012-12-28 166 views
0

我想回到後退棧中的最後一個片段,所以我想讓後退按鈕回彈棧。我應該這樣做嗎?如果是這樣,我應該重寫onBackPressed()或onKeyDown()?如果android後退按鈕被覆蓋

@Override 
     public void onBackPressed() 
      { 
      Intent intent = new Intent(this,ABC.class); 
      startActivity(intent); 
      } 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     // do something on back. 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

我的碎片沒有被添加到後退堆棧正確出於某種原因

我用這來試去回以前的片段,但順序表演奇怪。我該做什麼才能使訂單正確?

@Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft){ 
     if(teamsFrag !=null) 
     { 

      if(manage.getBackStackEntryCount() > 0) 
       manage.popBackStack(manage.getBackStackEntryAt(manage.getBackStackEntryCount()-1).getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE); 

      //ft.detach(dataFrag); 
     } 

回答

2

簡答題?

長答案?如果你不得不問,

你應該使用片段管理器設置你的片段,以便後退按鈕做你想要的。你不應該重寫後退按鈕,而不是正確地實現你的堆棧。

+0

那麼我應該如何設置它們以便在碎片中循環? – rasen58

+0

@ rasen58你爲什麼想要用BACK按鈕循環片段,這從用戶的角度來看似乎很不令人滿意。 – fhucho

+0

@fhucho不會更直觀,碎片位於不同的標籤中,所以不要按下標籤,而只是想按下後退按鈕。其實現在我想到了,你是對的,我不需要它。但是當應用程序啓動時,他們會點擊一個標籤,刪除之前所有的標籤,並在操作欄中顯示3個新標籤,所以我認爲按下後退按鈕可以更直觀地回到上一個操作酒吧佈局。 – rasen58

0

我想返回到後面堆棧中的最後一個片段,所以我想讓後退按鈕彈出堆棧。

這是您在使用FragmentTransaction#addToBackStack()添加FragmentManager時使用FragmentManager的默認行爲。