1. ホーム
  2. android

[解決済み] SearchViewをプログラムで閉じるには?

2023-07-09 14:15:25

質問

現在、私は SearchView を使用しています。検索アイコンをクリックすると SearchView が展開され、キーボードが期待通りにポップアップします。の中の"X"をクリックします。 SearchView ボックスを閉じると SearchView は期待通りに閉じられる。しかし SearchView がアクティブになり、"back" ボタンを押すと、アプリは終了します。これは正しい動作ですが、私が今しようとしているのは、戻るボタンの押下を捕捉して、単に SearchView (私のアプリではありません) を閉じることです。 SearchView が表示されているときに を呼び出す方法はありますか? SearchView OnCloseListener() を呼び出す方法はありますか?例えば、こんな感じ。

// On a back button press, if we are currently searching,
// close the SearchView. Otherwise, invoke normal back button
// behavior.
public boolean onKeyDown(int keyCode, KeyEvent event) {
   if (keyCode == KeyEvent.KEYCODE_BACK) {
        if (isSearchViewVisible) {
            SearchView searchView = (SearchView) menu.findItem(R.id.searchBox)
               .getActionView();

            // This method does not exist
            searchView.invokeClose();
            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

どのように解決するのですか?

MarcinOrlowskiの回答に基づいて、あなたも使用することができます。

@Override
public void onBackPressed() {
    if (!searchView.isIconified()) {
        searchView.setIconified(true);
    } else {
        super.onBackPressed();
    }
}