我正在尝试检查菜单组中的默认项目。我没有使用代码更改菜单中的任何内容。
菜单如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="Map type">
<menu>
<group
android:checkableBehavior="single"
>
<item
android:id="@+id/nav_map_type_normal"
android:title="Normal"
android:checked="true"
/>
<item
android:id="@+id/nav_map_type_satellite"
android:title="Satellite"
/>
<item
android:id="@+id/nav_map_type_terrain"
android:title="Terrain"
/>
<item
android:id="@+id/nav_map_type_hybrid"
android:title="Hybrid"
/>
</group>
</menu>
</item>
<item
android:id="@+id/nav_toggle_traffic"
android:title="Toggle traffic"
/>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
/>
</menu>
首次显示菜单时,第一项(正常)会突出显示,表示已选中。这就是我想要发生的事情。然后,我希望突出显示在按下每个项目时在组中移动。
问题是:
如果我按下卫星,则突出显示正常和卫星
如果我按下Hybrid, Normal仍然会突出显示,Hybrid就是 突出显示,卫星恢复到未经检查的状态。
只有在实际按下Normal后,其检查状态才会按预期运行。
我尝试删除android:checked =“true”并在代码中使用performIdentifierAction,但这并没有改变检查状态。
答案 0 :(得分:0)
由于您将NORMAL设置为默认值TRUE,因此当选择Satellite,Hybrid或Terrain时,您需要将其显式设置为false。
我相信目前,你会在nav_map_type_normal的onclickmenu选择代码上将NORMAL设置为android:checked = false。即你基本上 默认情况下取消选中它,它被选为TRUE。选择其他选项时请执行相同操作。
答案 1 :(得分:0)
很抱歉,我忘了提到菜单是在NavigationView中使用的,因为事实证明它改变了一切。
navigationView.setCheckedItem(R.id.nav_map_type_normal);
完全按我想要的方式表演。我在评论Navigation drawer: How do I set the selected item at startup?
中找到了它