2013-11-24 36 views
0

我在我的活动下面的代码:onOptionsItemSelected没有选择正确的点击菜单项

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; 
} 

但是,如果我点击savesearchrefresh不要紧,所有我在屏幕上看到的是: Got click 0

我预计不同的id的每个项目点击。

我做错了什么?

+0

您是否使用ActionBarSherlock? –

+0

是的,我是。行为是否不同? – Anthony

+0

我之前有过这个问题。检查:http://stackoverflow.com/a/10910315/362298 –

回答

0

很正常的事情做的是在XML来定义Menu及其项目作为资源 - 那么你可以定义自己的ID的物品。 Here's the android developer guide on how to do it with xml

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

+0

太棒了。标题将为我工作。我正在关注这个示例:https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock-samples/demos/src/com/actionbarsherlock/sample/demos/ContextMenus.java#L49 – Anthony

0

按照此结构调查在onOptionsItemSelected

 case R.id.your_case_name 
     //What you want it to do such as a toast 
     return true;