简体   繁体   English

ActionBarSherlock请求搜索

[英]ActionBarSherlock requesting search

I`m trying to request search from ActionBarSherlock. 我试图从ActionBarSherlock请求搜索。

My class extends SherlockListActivity. 我的课程扩展了SherlockListActivity。

This is how I`m adding Menu button to the ActionBar: 这就是我向ActionBar添加Menu按钮的方式:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add("Save")
            .setIcon(R.drawable.ic_action_search)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM |
                MenuItem.SHOW_AS_ACTION_WITH_TEXT);
        return true;
    }

The problem is that I am unable to invoke it by id: 问题是我无法通过id调用它:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId())  {
            case ?????: {
                onSearchRequested();
                return true;
            }
        }
        return true;
    }

How people usually solve this problem? 人们通常如何解决这个问题?

Thanks. 谢谢。

If you inflate you menu from an XML menu file you will set an id which you can then use in your onOptionsItemSelected method. 如果您从XML菜单文件中为菜单充气,您将设置一个id,然后您可以在onOptionsItemSelected方法中使用该ID。 Like this: 像这样:

XML XML

<menu xmlns:android="http://schemas.android.com/apk/res/android">     
    <item android:id="@+id/menu_search"
    android:icon="@drawable/ic_menu_search"
    android:showAsAction="ifRoom"
    android:actionViewClass="android.widget.SearchView" android:title="@string/search"/>
</menu>

Fragment 分段

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        case R.id.menu_search:
            onSearchRequested();

            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

Also you can use 你也可以使用

 @Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {

    menu.add(0, 1, 1, "Refresh").setIcon(R.drawable.ic_refresh).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    menu.add(0, 2, 2, "Search").setIcon(R.drawable.ic_search).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    return super.onCreateOptionsMenu(menu);
}


@Override
    public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {
        switch (item.getItemId()){
            case 1:
                ...
                break;
            case 2:
                ...
                break;
        }
        return true;
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM