2014-04-28 68 views
0

我爲我的問題尋找解決方案,但沒有找到我想要的。我希望你能幫忙。ActionBar更新片段之間的切換

我在Fragment中實現了列表,通過點擊列表中想要添加的細節片段。 列表片段具有其操作欄按鈕,而細節具有另一個操作欄按鈕。

細節在尋呼機中實現。當尋呼機片段加載一個片段 此外,名單是抽屜式導航片段

的hirarachy是 抽屜式導航我所用的附加片段時點擊>>名單片段>>頁面片段>>詳細片段

從列表到頁面,因爲當我使用替換時,我不想重新加載,而是返回列表。

我的問題是 當我回到列表時,操作欄按鈕沒有更新。它保留了細節片段的按鈕。列表片段。在項目點擊

PageFragment fragment = new PageFragment(); 
    FragmentTransaction fragmentTransaction = 
        fragmentManager.beginTransaction(); 
      fragmentTransaction.add(R.id.frame_container, fragment); 
      fragmentTransaction.addToBackStack(null); 

      fragmentTransaction.commit(); 



public boolean onOptionsItemSelected(MenuItem item) { 

     // Handle action bar actions click 
     switch (item.getItemId()) { 
      case android.R.id.home: 
      { 
       getActivity().onBackPressed(); 

       return true; 

      } 

這是backPressed在抽屜式導航活動

@Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     Log.i("Main ","Back pressed"); 

     mDrawerToggle.setDrawerIndicatorEnabled(true); 

    } 

在頁面片段和細節片段我覆蓋選項如下

public boolean onOptionsItemSelected(MenuItem item) { 


     switch (item.getItemId()) { 
      case android.R.id.home: 
      { 
       getActivity().onBackPressed(); 

       return true; 

      } 
} 

難道我這樣做對嗎?我怎麼能解決這個操作欄按鈕的問題 當我返回列表提前

+0

您應該使用'NavUtils'而不是手動調用'onBackPressed()'或FragmentManager來彈出後臺堆棧。 –

+0

我試過彈出片段管理器的後臺,並得到相同的結果 – Twinkle

回答

0

感謝invalidateOptionsMenu將導致選項菜單重繪。也許巧妙地使用這種方法,再加上你的活動中的onResume將解決你的問題。

+0

你可以給更多的解釋使用onResume?這個方法要用什麼? – Twinkle

+0

基本上,您需要檢測您的活動何時回到前臺,onResume是活動對用戶再次可見時所調用的一種方法。當碎片被移除時,活動恢復,重新構建那裏的選項菜單。 http://4.bp.blogspot.com/-iAh-GvmfHU0/UMnUEcPv2cI/AAAAAAAAALk/cZlh4kMEzNo/s1600/activity_lifecycle.png – r2DoesInc

+0

我明白了,你能告訴我如何重建選項菜單嗎?我可以打電話給方法嗎?什麼參數作爲菜單發送? – Twinkle