2015-11-05 109 views
0

我有一個基本問題,我很驚訝我沒有找到一個已經處理這個問題的主題:我添加元素到我的導航抽屜菜單時遇到困難。動態添加項目到NavigationDrawer菜單

我保留了菜單的參考:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main_pager, menu); 
     mMenu = menu; 
     return true; 
    } 

而且在的AsyncTask的回調,我嘗試將項目添加到我的菜單是這樣的:

mMenu.add("title").setIcon(R.drawable.ic_group); 

Idealy我想將它添加到「menu_group」組中,但現在我嘗試這種方式。

佈局/ activity_main_pager

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

    <include 
     layout="@layout/app_bar_main_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main_pager" 
     app:menu="@menu/activity_main_pager_drawer" /> 

</android.support.v4.widget.DrawerLayout> 

菜單/ activity_main_pager_drawer

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:title="@string/menu_title_groups"> 
     <menu> 
      <group android:id="@+id/menu_groups"> 
       <item 
        android:id="@+id/menu_add_group" 
        android:icon="@drawable/ic_group_add" 
        android:title="@string/menu_add_group" /> 
      </group> 
     </menu> 
    </item> 
</menu> 

獎金的問題:我的菜單 「menu_add_group」 項目的圖標顯示不正確,我有一個灰色的方塊而不是它。

謝謝,如果我沒有搜索correclty,請不要猶豫與我聯繫。


好吧,其中一個問題是我得到我的mMenu的方式。我添加了所有我的救命恩人上市加改正這一個:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 

     getMenuInflater().inflate(R.menu.main_pager, menu); 
     return true; 
    } 

,並在我的活動初始化:

NavigationView nav = (NavigationView) mDrawer.findViewById(R.id.nav_view); 
mMenu = nav.getMenu(); 

當我添加菜單項:

menu.add("title").setIcon(R.drawable.ic_group); 
supportInvalidateOptionsMenu(); 

回答

0

改變後您需要撥打invalidateOptionsMenu()(或supportInvalidateOptionsMenu,如果您使用支持庫)的菜單項。然後Android會知道它需要重新創建它,並會再次撥打onCreateOptionsMenu(Menu)。您需要在那裏爲新菜單充氣。

灰色的圖標是由於項目的色調。您只需撥打mNavigationView.setItemIconTintList(null)即可將其刪除。

+0

仍然不打印我的菜單項目。我的代碼中必須有一個以上的缺陷。 setItemIconTintList(null)認爲它的工作!謝謝 ! –

+0

您仍然需要在'onCreateOptionsMenu(菜單)'中正確填充菜單。我已經更新了我的答案,明確提及它。 –

+0

我有這種感覺,我不應該在onCreateOptionMenu中獲得菜單,還有其他方法嗎? –