使用menuItem.getItemId()有效查找用户选择的MenuItem吗?

时间:2011-08-26 07:05:56

标签: android

我的应用程序中有菜单。我需要检查用户选择了哪个菜单项并采取适当的措施。我这样做了,

    @Override
public boolean onOptionsItemSelected(MenuItem menuitem){
        String title = menuitem.getTitle().toString();
        int itemId = menuitem.getItemId();
                    switch(itemId){
                        case 2131296257:
                                -----------------;
                                break;
                        case 2131296258:
                                 ------------------;
                                 break;                             
                    }

但每次运行我的应用程序时,这些MenuItem Id都会发生变化。现在我想将menuTitle与硬编码字符串值比较,如

 String title = menuitem.getTitle().toString();

   if(title.equals("Settings..")){
                ------------- 
                ------------- 
                -------------
   } 

但我认为这不是一个好习惯。但我想我可以使用strings.xml中定义的菜单标题来做同样的事情。但我不知道如何使用它....(如R.string .....)。

有人可以建议吗。

由于

1 个答案:

答案 0 :(得分:7)

这是一个名为game_menu.xml的示例菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/new_game"
          android:icon="@drawable/ic_new_game"
          android:title="@string/new_game" />
    <item android:id="@+id/help"
          android:icon="@drawable/ic_help"
          android:title="@string/help" />
</menu>

夸大菜单资源

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.game_menu, menu);
    return true;
}

响应用户操作

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.new_game:
        newGame();
        return true;
    case R.id.help:
        showHelp();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

了解更多信息click here