2

ActionBar Sherlockを使用して、プロジェクトの1つに検索機能を実装しました。これで、公式のABシャーロックプロジェクトリポジトリ(github上)のサンプルのように、ActionBarに検索編集テキストが表示されます:折りたたみ可能なアクションアイテム

検索編集テキストは、アクティビティ内のListViewをフィルタリングしています。ユーザーがいくつかの文字を入力し始めると、ListViewはフィルタリングされます。私はtextWatcherを検索に追加することによってそれを行いました次のようにテキストを編集します:

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    menu.add(Menu.NONE, SEARCH_ACTION_MENU, 0, "Search")
        .setIcon(R.drawable.ic_search)
        .setActionView(R.layout.search_edittext)
        .setShowAsAction(
            MenuItem.SHOW_AS_ACTION_ALWAYS
                | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    /** We get a reference to the search edit */
    MenuItemWrapper menuItemWrapper = (MenuItemWrapper) menu.getItem(0);
    final EditText searchEdit = (EditText) menuItemWrapper.getActionView();
    /** We add a listener search filter listener */
    searchEdit.addTextChangedListener(filterWatcher); // filterwatcher is a textWatcher
    return true;
  }

検索アイコンをクリックすると、検索テキストの編集が表示され、ユーザーは入力を開始できます。また、ホームボタンは「上向きホームボタン」(左矢印付き)として表示されます。

この矢印をクリックすると検索テキストビューが非表示になりますが、ユーザーがすでに入力を開始している場合、ユーザーがホームの[上へ]をクリックした後に検索テキストビューが表示されなくなっても、リストビューはフィルタリングされ、リセットされません。 " ボタン。

私の質問は、 「上へ」ボタンのクリックをインターセプトしてリストビューをリセットするにはどうすればよいですか?これがリストをリセットできる唯一の方法だと思います。

私はすでに試しました:

@Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      case android.R.id.home:
        Log.d(Constants.LOG_TAG, "Home button clicked");
        return true;

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

「ホームボタン」が「上」ボタンとして表示されている場合は動作しません。

どんな助けでもいただければ幸いです。

前もって感謝します、

4

2 に答える 2

2

CollapsibleActionViewコールバックを受け取るには、ビューに実装する必要がありonActionViewCollapsed()ます。

devまた、ネイティブ アクション バーで使用する場合の折りたたみ可能なアクション アイテムに関する重要な修正が含まれているため、ブランチにある ActionBarSherlock のバージョンにアップグレードする必要があります。

于 2012-08-01T09:11:28.677 に答える
0

で動作するはずonOptionsItemSelectedです。

を使用していることを確認してくださいcom.actionbarsherlock.view.MenuItem

onMenuItemSelected(int featureId, MenuItem item)同じように使うこともできます。

于 2012-07-31T12:55:01.000 に答える