java - 在不同组中选择的抽屉导航菜单项

标签 java android android-fragments navigation-drawer android-menu

我有一个可用的抽屉导航并且在使用 menuItem.setChecked(true); 时遇到了一些问题在菜单中使用组和标题时。它没有按预期突出显示菜单项。

这是我的 XML:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".ActivityMap">

    <group android:checkableBehavior="single">


        <item
            android:id="@+id/nav_welcome"
            android:icon="@drawable/abc_btn_check_to_on_mtrl_000"
            android:title="Welcome" />
        <item
            android:id="@+id/nav_map_showmap"
            android:icon="@mipmap/ic_map_black_24dp"
            android:title="Show Map" />
        <item
            android:icon="@mipmap/ic_list_black_24dp"
            android:title="Show List" />

        <item android:title="Settings">
            <menu>

                <item
                    android:id="@+id/nav_database_check"
                    android:icon="@mipmap/ic_cloud_done_black_24dp"
                    android:title="Update Database" />
                <item
                    android:id="@+id/nav_map_settings"
                    android:icon="@mipmap/ic_settings_black_24dp"
                    android:title="App Preferences" />

            </menu>
        </item>


        <item android:title="General">
            <menu>

                <item
                    android:id="@+id/nav_general_about"
                    android:icon="@mipmap/ic_info_black_24dp"
                    android:title="About" />
                <item
                    android:id="@+id/nav_general_help"
                    android:icon="@mipmap/ic_help_black_24dp"
                    android:title="Help" />
                <item
                    android:id="@+id/nav_general_report"
                    android:icon="@mipmap/ic_email_black_24dp"
                    android:title="Feedback / Report error" />
            </menu>
        </item>
    </group>
</menu>

如您所见,我有 3 个菜单项,然后是一个包含 2 个菜单项的设置组,然后是一个包含 3 个菜单项的常规组。

现在有了前 3 个菜单项,menuItem.setChecked(true);正在按预期工作,并突出显示该菜单项。但是,子集(“设置”或“常规”子集)中的以下菜单项均未正确突出显示。

我读到 <group android:checkableBehaviour="single">可以封装整个 block ,但这似乎不起作用。

有什么想法吗?干杯。

编辑 - 添加了菜单结构的屏幕截图

enter image description here

最佳答案

更新

如果您已将 Android Studio 升级到 1.4,您可以创建一个新项目(使用 Navigation Drawer Activity 模板)。然后,您可以按如下方式更新您的菜单文件(注意 “Communicate”“BNK” 的 2 个子菜单中的两行 <group android:checkableBehavior="single">):

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item android:id="@+id/nav_camara" android:icon="@android:drawable/ic_menu_camera"
            android:title="Import" />
        <item android:id="@+id/nav_gallery" android:icon="@android:drawable/ic_menu_gallery"
            android:title="Gallery" />
        <item android:id="@+id/nav_slideshow" android:icon="@android:drawable/ic_menu_slideshow"
            android:title="Slideshow" />
        <item android:id="@+id/nav_manage" android:icon="@android:drawable/ic_menu_manage"
            android:title="Tools" />
    </group>

    <item android:title="Communicate">
        <menu>
            <group android:checkableBehavior="single">
                <item android:id="@+id/nav_share" android:icon="@android:drawable/ic_menu_share"
                android:title="Share" />
                <item android:id="@+id/nav_send" android:icon="@android:drawable/ic_menu_send"
                android:title="Send" />
            </group>
        </menu>
    </item>

    <item android:title="BNK">
        <menu>
            <group android:checkableBehavior="single">
                <item android:id="@+id/nav_share_bnk" android:icon="@android:drawable/ic_menu_share"
                    android:title="Share BNK" />
                <item android:id="@+id/nav_send_bnk" android:icon="@android:drawable/ic_menu_send"
                    android:title="Send BNK" />
            </group>
        </menu>
    </item>
</menu>

这是截图

BNK's screenshot

更新结束


正如我评论过的,请尝试输入 <group android:checkableBehavior="single">在设置和常规菜单下方,而不是放在外部菜单下方。这意味着您将有 2 个组。希望这对您有所帮助!

关于java - 在不同组中选择的抽屉导航菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32695710/

相关文章:

java - 如何在 Spring 中将 ElasticSearch 模型字段标记为 KeyWord 类型?

java - 如何将数据库行 ID 分配给按钮

java - 当从 fragment 更改我的 Activity 标题时会导致崩溃

android - 无法实例化以下类?

具有条件颜色变化的 JavaFx TableView ProgressBar

java - 如何在将 blob 上传到 Blobstore 的 POST 请求中提交文本字段,并在 blob 的上传处理程序中检索它?

java - Ping 结果的正则表达式模式匹配

android - 抽屉导航 - 禁用点击抽屉后面的项目

Android ViewPager 根据屏幕尺寸显示多个 fragment

android - 我怎样才能关闭 fragment ?