Java 动态添加的菜单项在导航抽屉中单击时消失

Java 动态添加的菜单项在导航抽屉中单击时消失,java,android,Java,Android,我按照向导创建了一个导航抽屉 然后我想添加两组菜单项。一个用于用户创建的列表,另一个用于标签。因为我不能直接为组设置标题,所以我遵循教程,将组包装在标记中 我的XML菜单如下所示: 在onCreate中,我使用其id找到NavigationView,然后获取其菜单,通过其id获取第一个菜单,获取项目的子菜单并添加菜单项: NavigationView navigationView = findViewById(R.id.nav_view); Menu menu = navigationView

我按照向导创建了一个导航抽屉

然后我想添加两组菜单项。一个用于用户创建的列表,另一个用于标签。因为我不能直接为组设置标题,所以我遵循教程,将组包装在标记中

我的XML菜单如下所示:

在onCreate中,我使用其id找到NavigationView,然后获取其菜单,通过其id获取第一个菜单,获取项目的子菜单并添加菜单项:

NavigationView navigationView = findViewById(R.id.nav_view);
Menu menu =  navigationView.getMenu();
MenuItem item = menu.findItem(R.id.item_lists);
SubMenu sbLists = item.getSubMenu();
sbLists.add(0, 0, 0, "Android").setIcon(R.drawable.ic_android);
sbLists.add(0, 1, 0, "iOS").setIcon(R.drawable.ic_ios);
以及:

当我单击XML中添加的项目时,抽屉关闭,如果我再次打开它,我可以看到项目被选中。 但是,在onCreate中添加了项目后,我在重新打开抽屉后看到:

点击这个

它不见了

我尝试过在堆栈溢出上搜索,只发现了一个具有相同问题的问题,但是,解决方案是将项文本颜色设置为黑色。这不会解决项目未被选中的问题,也不会解决图标消失的问题

请让我知道我做错了什么,谢谢

编辑: 下面是styles.xml中我的主题的外观:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="windowActionModeOverlay">true</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="iconColor">@color/icons_light</item>
    <item name="toolbarIconColor">@color/icons_light</item>
    <item name="android:textColorPrimary">@color/primary_text</item>
</style>

符合事实的
@颜色/颜色重音
@颜色/图标/灯光
@颜色/图标/灯光
@颜色/主文本

我认为您需要更改
导航视图的主题
为文本设置
colorPrimary
,为所选背景元素设置
colorControlHighlight

<style name="ThemeOverlay.AppCompat.myTheme">
    <item name="colorPrimary">@color/color-primary</item>
    <item name="colorControlHighlight">@color/color-primary</item>
</style>
解决了这个问题

尽管我已经在XML中为我添加项目的组声明了
android:checkableBehavior=“single”>
,但对于通过编程添加的每个项目,我仍然必须手动执行
setCheckable(true)

subMenu.add(R.id.group_lists, ITEM_ID, ITEM_ORDER, "item").setIcon(R.drawable.ic_list).setCheckable(true);

现在,当我单击用XML或Java创建的项目时,图标和文本都可见,该项目被选中。

它看起来被禁用了,而不是消失了。它被禁用了吗?它是否可点击?@forpas它未被禁用。我可以点击它,但没有显示。如果我遵循类似问题的解决方案(如上链接),那么我可以看到文本。在创建项目并将其添加到导航抽屉时,可能需要设置项目的TextColor。选中XML项目后,将丢失其图标和文本,并由colorPrimary填充。我仍然无法选择用Java添加的项目:下面是一个视频,演示了它的外观:这是因为您使用的主题,我在问题的底部添加了主题。我应该修改什么来启动并运行它?我回答说,因为我尝试了你的解决方案。我还提供了一段视频,展示了您的解决方案的效果。答案-不幸的是,它不起作用。
<android.support.design.widget.NavigationView
        ...
        app:theme="@style/ThemeOverlay.AppCompat.myTheme">
subMenu.add(R.id.group_lists, ITEM_ID, ITEM_ORDER, "item").setIcon(R.drawable.ic_list).setCheckable(true);