【问题标题】:Determining the SubMenu of a MenuItem确定 MenuItem 的子菜单
【发布时间】:2017-01-24 07:49:27
【问题描述】:

我的应用中有一个NavigationView。在NavView 的菜单中,我有两个子菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/nav_group_one"
        android:title="SubMenu A">
        <menu>
            <item
                android:checkable="true"
                android:title="One"/>
            <item
                android:checkable="true"
                android:title="Two"/>
        </menu>
    </item>

    <item
        android:id="@+id/nav_group_two"
        android:title="SubMenu B">
        <menu>
            <item
                android:checkable="true"
                android:title="Three"/>
            <item
                android:checkable="true"
                android:title="Four"/>
        </menu>
    </item>
</menu>

在我的活动onNavigationItemSelected() 中,我希望能够确定所选项目在哪个子菜单中。我该怎么做?

【问题讨论】:

    标签: android menu menuitem android-menu


    【解决方案1】:

    目前我还没有找到现有的解决方案,但是我找到了解决方法:

    要以最小的额外 XML 开销解决此问题,请将每组子菜单项包装在一个组中,并使用 Id:

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/nav_group_one"
            android:title="SubMenu A">
            <menu>
                <group id="@+id/nav_group_wrapper_one">
                    <item
                        android:checkable="true"
                        android:title="One"/>
                    <item
                        android:checkable="true"
                        android:title="Two"/>
                </group>
            </menu>
        </item>
    
        <item
            android:id="@+id/nav_group_two"
            android:title="SubMenu B">
            <menu>
                <group id="@+id/nav_group_wrapper_two">
                    <item
                        android:checkable="true"
                        android:title="Three"/>
                    <item
                        android:checkable="true"
                        android:title="Four"/>
                </group>
            </menu>
        </item>
    </menu>
    

    这样一来,可以简单地调用item.getGroupId() 来推断它所包含的子菜单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      相关资源
      最近更新 更多