我的活动中有以下代码:
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
search
或refresh
,则无关紧要:Got click 0
我希望点击的每个项目都有不同的id
。
我做错了吗?
答案 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()
(即“保存”,“搜索”,“刷新”)。