检查菜单组中的默认项目

时间:2016-04-06 04:09:56

标签: java android

我正在尝试检查菜单组中的默认项目。我没有使用代码更改菜单中的任何内容。

菜单如下:

<?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,但这并没有改变检查状态。

2 个答案:

答案 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?

中找到了它