2

我有一個ActionBar活動。在這個活動中,我已經實現了Android API的導航抽屜。需要ActionBar,導航抽屜和背部堆棧的建議

導航抽屜的一個選項是在列表中設置一個帶有一些元素的ListFragment。

當我點擊一些元素時,我想創建一個新的片段並將之前的ListFragment設置爲堆棧。另外我想通過單擊ActionBar home按鈕來銷燬這個新的片段,以便返回到前面的ListFragment。

我的問題來了:當我點擊操作欄的home按鈕時,顯示抽屜佈局,而不是銷燬碎片......我該怎麼辦?

我也已覆蓋onOptionsItemSelected方法在片段:

@Override 
    public boolean onOptionsItemSelected(MenuItem menuItem) { 
     switch (menuItem.getItemId()) { 
      case android.R.id.home: 
       getFragmentManager() 
         .popBackStack(); 
     } 
     return (super.onOptionsItemSelected(menuItem)); 

    } 

而且我已經充氣的新片段時設定ListFragment到返回堆棧:

getFragmentManager() 
       .beginTransaction() 
       .setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right) 
       .replace(R.id.activity_main_fragment_container, fragment) 
       .addToBackStack(null) 
       .commit(); 
+0

你在使用'ActionBarDrawerToggle'嗎? –

+0

@ana 01是的,當然 – BamsBamx

回答

1

那麼,作爲文檔說here,popBackStack ()是異步的。我想你會打電話給super.onOptionsItemSelected(menuItem)來顯示抽屜佈局。

我建議你回true你自己處理這個選擇所有的情況下(在這種特定情況:case android.R.id.home:),並調用getActivity().onBackPressed()(假設按硬件後退按鈕的最後一個片段被刪除,因爲它應該),而不是直接彈出堆棧。我已經實現了一個類似的解決方案,它適用於我。