2015-06-07 42 views
1

我做了一個XML爲包含以下菜單項我的抽屜菜單:如何在Google新的NavigationView中將MenuItem添加到SubMenu中?

<item android:title="Contacts" 
    android:id="@+id/contact_list"> 
    <menu> 

    </menu> 
</item> 

在我的MainActivity我得到空的子菜單參考,並嘗試新的測試菜單項添加到子菜單。

mNavMenu = mNavigationView.getMenu(); 
mNavMenu.findItem(R.id.contact_list).getSubMenu().add("hello"); 

不幸的是,這是行不通的,MenuItems沒有被添加。我已經嘗試了許多其他不同的變化,但他們都沒有更新我的導航抽屜中的SubMenu。

這可能是一個錯誤?

+0

據我所知這是一個在圖書館的錯誤,但我沒有找到它的參考 –

回答

0

你正在做它在錯誤的方式... 您沒有找到菜單agian ...只需撥打mNavMenu實例的方法..

mNavMenu = mNavigationView.getMenu(); 
mNavMenu.addSubMenu("It's new bro .. "); 
+0

上述作品,並確實創造了一個新的子菜單,但我有問題添加到現有的菜單項子菜單。我已經成功地創建了一個子菜單。問題是一旦創建了子菜單,就可以將菜單項添加到子菜單中,無論是在佈局中還是以編程方式在代碼中顯示,如此處所示。 –

1

因此很明顯, ,唯一的解決辦法,現在是使用反射來調用notifyDataSetChanged()菜單:

for (int j = 0, count = mNavigationView.getChildCount(); j < count; j++) { 
     final View child = mNavigationView.getChildAt(j); 
     if (child != null && child instanceof ListView) { 
     final ListView menuView = (ListView) child; 
     final HeaderViewListAdapter adapter = (HeaderViewListAdapter) menuView.getAdapter(); 
     final BaseAdapter wrapped = (BaseAdapter) adapter.getWrappedAdapter(); 
     wrapped.notifyDataSetChanged(); 
     } 
    } 

這將更新菜單,新的項目。

相關問題