Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将菜单项添加到Google';什么是新的导航视图?_Android_Navigationview - Fatal编程技术网

Android 如何将菜单项添加到Google';什么是新的导航视图?

Android 如何将菜单项添加到Google';什么是新的导航视图?,android,navigationview,Android,Navigationview,我为抽屉菜单制作了一个xml,其中包含以下菜单项: <item android:title="Contacts" android:id="@+id/contact_list"> <menu> </menu> </item> 不幸的是,这不起作用,并且没有添加菜单项。我尝试过许多其他不同的版本,但没有一个更新我导航抽屉中的子菜单 这可能是一个bug吗?你用了错误的方法。。。 你不必再找菜单了。。。只需在mNavMenu的实例上调用

我为抽屉菜单制作了一个xml,其中包含以下菜单项:

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

  </menu>
</item>
不幸的是,这不起作用,并且没有添加菜单项。我尝试过许多其他不同的版本,但没有一个更新我导航抽屉中的子菜单


这可能是一个bug吗?

你用了错误的方法。。。 你不必再找菜单了。。。只需在mNavMenu的实例上调用该方法

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

显然,目前唯一的解决方案是使用反射调用菜单上的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();
      }
     }
for(int j=0,count=mNavigationView.getChildCount();j

这将使用新项目更新菜单

上面的工作原理和事实上创建了一个新的子菜单,但我在将菜单项添加到现有子菜单时遇到了问题。我已经成功地创建了一个子菜单。问题是在创建子菜单后,将菜单项添加到子菜单本身,无论是在布局中还是在此处显示的代码中以编程方式。据我所知,这是库中的一个错误,但我还没有找到它的参考
    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();
      }
     }