唯一标识ActionBar选项菜单项

时间:2013-03-10 01:54:55

标签: android android-actionbar

我正在将我最初编写的应用转换为目标v2.2,因此它使用v4兼容性库和ActionBarSherlock定位v4。

我正在玩ActionBar选项菜单和子菜单,并试图找出如何以独特方式识别子菜单项。

示例...

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    SubMenu mediaSubMenu = menu.addSubMenu("Media");
    mediaSubMenu.add("Videos");
    mediaSubMenu.add("Music");

}

没关系,我获得了“媒体”的ActionBar菜单项,当我点击时,我会看到“视频”和“音乐”子菜单项。我的问题是我找出识别被点击的子菜单项的唯一方法如下......

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);

    if (item.getTitle().equals("Music")) {
        // Do something
        return true;
    }
    return false;
}

虽然我可能有另一个具有相同名称的子菜单项,但我发生这种情况,例如“设置” - > “音乐”。

我如何区分这两者?我不禁感到我在这里错过了一些非常简单的东西。

1 个答案:

答案 0 :(得分:3)

为MenuItems设置ID

mediaSubMenu.add(Menu.NONE, R.id.media_videos, Menu.NONE, "Videos")

您可以在资源文件中定义id(例如res / values / ids.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="media_videos" type="id"/>
    <item name="other_videos" type="id"/>
</resources>

然后您可以使用

switch(item.getItemId()) {
    case R.id.media_videos:
        ...
    case R.id.other_videos:
        ...
}

我还建议使用菜单xml来设置操作栏数据。