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

bak*_*i_s 6 android actionbarsherlock android-actionbar

我最近一直在使用ActionBarSherlock,并且在完成各种教程之后,我编写了这段代码来向Action栏添加项目

@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;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何区分两次点击.

虽然我确实发现你必须覆盖onOptionsItemSelected来处理点击,并且还可以使用switch语句来区分点击,但是大多数教程都使用来自xml菜单的项ID.由于我不是在xml中创建菜单,如何在没有id的情况下区分点击.

Han*_*oit 17

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);
    }
}
Run Code Online (Sandbox Code Playgroud)