确定 MenuItem 的子菜单
Determining the SubMenu of a MenuItem
我的应用程序中有一个 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>
在我的 activity 的 onNavigationItemSelected()
中,我希望能够找出所选项目所在的子菜单。我该怎么做?
到目前为止我还没有找到现有的解决方案,但是我找到了一个解决方法:
要以最小的额外 XML 开销解决此问题,请将每组 sub-menu 项目包装在一个组中,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()
来推断其中包含的 sub-menu。
我的应用程序中有一个 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>
在我的 activity 的 onNavigationItemSelected()
中,我希望能够找出所选项目所在的子菜单。我该怎么做?
到目前为止我还没有找到现有的解决方案,但是我找到了一个解决方法:
要以最小的额外 XML 开销解决此问题,请将每组 sub-menu 项目包装在一个组中,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()
来推断其中包含的 sub-menu。