Android 如何区分ActionBarSherlock中的两次菜单项单击?
我最近一直在与ActionBarSherlock合作,并遵循各种教程,我编写了此代码来向ActionBar添加项目Android 如何区分ActionBarSherlock中的两次菜单项单击?,android,actionbarsherlock,android-actionbar,Android,Actionbarsherlock,Android Actionbar,我最近一直在与ActionBarSherlock合作,并遵循各种教程,我编写了此代码来向ActionBar添加项目 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add("Refresh") .setIcon(R.drawable.ic_action_refresh) .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("Refresh")
.setIcon(R.drawable.ic_action_refresh)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add("Search")// Search
.setIcon(R.drawable.ic_action_search)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return true;
}
然而,我不知道如何区分这两次点击
虽然我发现您必须重写onOptions ItemSelected来处理单击,并且可以使用switch语句来区分单击,但是大多数教程都使用xml菜单中的项ID。由于我不是用xml创建菜单,我如何区分没有Id的点击。您可以在OnOptions ItemSelected中使用Id进行ti操作………..也可以在此处设置Id ,int,int,java.lang.CharSequence) 只需检查以下内容
http://developer.android.com/guide/topics/ui/actionbar.html
其中包含
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { <--- here you can get it
case android.R.id.home:
// app icon in action bar clicked; go home
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@覆盖
公共布尔值onOptionsItemSelected(菜单项项){
switch(item.getItemId()){是的,但是什么id,我没有为它们设置任何id,当我添加菜单项时,没有像.setid(string)这样的方法哦,谢谢,我一拿到我的电脑就试试,忽略最后的评论。你有什么特别的理由不在XML文件中定义菜单吗?这会容易得多。谢谢,对我来说,同样的问题,现在setIcon()不起作用。你能帮我吗
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { <--- here you can get it
case android.R.id.home:
// app icon in action bar clicked; go home
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private static final int REFRESH = 1;
private static final int SEARCH = 2;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, REFRESH, 0, "Refresh")
.setIcon(R.drawable.ic_action_refresh)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add(0, SEARCH, 0, "Search")
.setIcon(R.drawable.ic_action_search)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case REFRESH:
// Do refresh
return true;
case SEARCH:
// Do search
return true;
default:
return super.onOptionsItemSelected(item);
}
}