回答

1

將您的NavigationView一個NavigationItemSelected ClickListener和它做這樣的事情:

switch (e.menuItem.itemId) 
      { 
       case (R.id.nav_home): 
        e.MenuItem.SetChecked(true); 
        toolbar.inflateMenu(R.menu.newMenu); 
        break; 
       case (R.id.nav_two): 
        e.MenuItem.SetChecked(true); 
        toolbar.inflateMenu(R.menu.newMenu2); 
        break; 
      } 

,並創建你的菜單文件夾中新的XML文件,每個包含不同的控件你工具欄。 類似這樣的:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item android:id="@+id/action_close" 
     android:title="" 
     android:icon="@drawable/ic_close_white_24px" 
     app:showAsAction="always|collapseActionView"/> 
    <item android:id="@+id/..." 
     android:title="" 
     android:icon="..." 
     app:showAsAction="always|collapseActionView"/> 
</menu> 
2

我想你可以setHasOptionsMenu(true)onCreate()方法的每個片段。和通常的ovveride方法onCreateOptionsMenu()一樣。我的意思是充氣菜單和其他的東西,你創建菜單時,你總是這樣做。

現在的問題是您必須將DrawerListener設置爲您的DrawerLayout。然後進入聽衆ovveride方法onDrawerOpened()onDrawerClosed(),其中每個人都必須致電invalidateOptionsMenu()。使用android.support.v7.app.ActionBarDrawerToggle作爲DrawerListener。進入方式類似

myDrawerLayout.addDrawerListener(new ActionBarDrawerToggle(this, mDrawerLayout, 
       R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { 

      public void onDrawerClosed(View view) { 
       super.onDrawerClosed(view) 

       invalidateOptionsMenu(); 
      } 

      public void onDrawerOpened(View drawerView) { 
       super.onDrawerOpened(drawerView); 

       invalidateOptionsMenu(); 
      } 
     }; 

這裏R.string.drawer_close和DRAWER_OPEN只是在資源字符串等於「關閉」,並分別爲「打開」。更多關於導航抽屜,你可以在這裏閱讀:Navigation Drawers

請注意,您不能在每個片段中使用唯一的工具欄。我的意思是工具欄的實例。至少它從來沒有爲我工作。相反,創建一個工具欄一次,然後更改每個片段上的內容。要從所有片段訪問工具欄,可以使用一個名爲RetainFragment的幫助器片段,它將使用setRetainInstance(true)。它可以幫助你不破壞這個片段並將它保存到不同的變量或對象中。更詳細的,你可以在我的文章閱讀:Simple trick to use and manage Toolbar with Fragments in Android

+0

謝謝,但你不要貶低我的意圖 –