1

ActionBarSherlockに検索をリクエストしようとしています。

私のクラスはSherlockListActivityを拡張します。

これが、アクションバーにメニューボタンを追加する方法です。

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

問題は、idで呼び出すことができないことです。

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

人々は通常この問題をどのように解決しますか?

ありがとう。

4

2 に答える 2

4

XML メニュー ファイルからメニューを拡張する場合は、メソッドで使用できる ID を設定しますonOptionsItemSelected。このような:

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>

断片

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

        case R.id.menu_search:
            onSearchRequested();

            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}
于 2012-05-02T10:39:15.033 に答える
0

また、使用できます

 @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;
    }
于 2012-06-05T12:57:07.833 に答える