Android 如何区分ActionBarSherlock中的两次菜单项单击?

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

我最近一直在与ActionBarSherlock合作,并遵循各种教程,我编写了此代码来向ActionBar添加项目

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