android:从子菜单中删除一个项目

标签 android menu android-actionbar submenu

我在菜单中创建了项目列表。所有这些项目都将显示在操作栏中。然后每个项目将再次具有项目的子菜单。

下面是我的xml代码:

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

<item
    android:id="@+id/whiteBalanceList"
    android:icon="@drawable/white_balance_list"
    android:showAsAction="always"
    android:title="@string/selWhiteBalance">
    <menu>
        <item
            android:id="@+id/whiteBalanceAuto"
            android:title="Auto" />
        <item
            android:id="@+id/whiteBalanceCloudy"
            android:title="Cloudy Daylight" />
        <item
            android:id="@+id/whiteBalanceDaylight"
            android:title="Daylight" />
        <item
            android:id="@+id/whiteBalanceFluorescent"
            android:title="Fluorescent" />
        <item
            android:id="@+id/whiteBalanceIncandescent"
            android:title="Incandescent" />
        <item
            android:id="@+id/whiteBalanceShade"
            android:title="Shade" />
        <item
            android:id="@+id/whiteBalanceTwilight"
            android:title="Twilight" />
        <item
            android:id="@+id/whiteBalanceWarm"
            android:title="Warm Fluorescent" />  
    </menu>
</item>
<item
    android:id="@+id/flashList"
    android:icon="@drawable/flash_list"
    android:showAsAction="always"
    android:title="@string/selFlash">
    <menu>
        <item
            android:id="@+id/flashAuto"
            android:title="Auto"/>
        <item
            android:id="@+id/flashOn"
            android:title="On"/>
        <item
            android:id="@+id/flashOff"
            android:title="Off"/>
    </menu>
</item>  
</menu>

当我尝试使用以下代码删除子菜单项时(例如,我想删除“白平衡列表”子菜单下的“自动”项):

menu.getItem(R.id.whiteBalanceList).getSubMenu().removeItem(R.id.whiteBalanceAuto);

我收到索引 outOfBoundException 错误,因为 R.id.whiteBalanceList 实际上会产生随机唯一数字,但 menu.size() 仅为 2...

但是如果我改为执行 removeItem,即

menu.removeItem(R.id.whiteBalanceList);

它运行完美...

知道为什么吗?

最佳答案

我猜你必须使用 'findItem' 而不是像 'getItem'

menu.findItem(R.id.whiteBalanceList).getSubMenu().removeItem(R.id.whiteBalanceAuto);

我也会对 NULL 进行更多检查,以防万一:)

关于android:从子菜单中删除一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909593/

相关文章:

android - 如何使用 onResume()?

android - compileSdkVersion 和 targetSdkVersion 有什么区别?

css 菜单问题,父项宽度跨越子项总宽度

javascript - 如果单击子菜单项,请避免关闭菜单

macos - 操作系统: How to "unhide" a status bar item?

android - 如何删除 Android 中操作栏图标之间的多余空间?

android - 向 View 添加自定义属性

java - Android 获取固定选项卡、PageViewer 来加载不同的 fragment

Android - 如何创建像 WhatsApp 聊天一样的操作栏?

android - 如何知道 Android 操作栏的操作图标是在顶部栏还是底部栏(拆分)?