onOptionsItemSelected未选中右键单击的菜单项

时间:2013-11-24 21:28:19

标签: java android android-layout

我的活动中有以下代码:

import com.actionbarsherlock.app.SherlockListActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
....
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add("Save")
            .setIcon(R.drawable.action_create).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    menu.add("Search")
            .setIcon(R.drawable.action_search)
            .setActionView(R.layout.collapsible_edittext)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    menu.add("Refresh")
            .setIcon(R.drawable.ic_refresh)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Toast.makeText(this, "Got click: " + item.getItemId(), Toast.LENGTH_SHORT).show();
    return true;
}

但是,如果点击屏幕上显示的save searchrefresh,则无关紧要:Got click 0

我希望点击的每个项目都有不同的id

我做错了吗?

2 个答案:

答案 0 :(得分:0)

在onOptionsItemSelected

中遵循此结构
        case R.id.your_case_name
        //What you want it to do such as a toast
        return true; 

答案 1 :(得分:0)

正常的做法是将Menu及其在xml中的项目定义为资源 - 然后您可以为项目定义自己的ID。 Here's the android developer guide on how to do it with xml

另一个快速解决方法是不使用onOptionsItemSelected()中的ID,而是使用您已定义的MenuItem.getTitle()(即“保存”,“搜索”,“刷新”)。