私のアプリには標準のSearchViewウィジェットが含まれています。下のコードからわかるように、私はOnClickListener、OnCloseListener、およびOnQueryTextListenerを設定しています。クエリの送信後にSearchViewがクリックに反応しない
SearchViewをタップすると、最初は期待どおりに応答します。テキストを入力してキーボードの検索ボタンを押すと、OnQueryTextListenerが正しく起動され、キーボードはsearchView.setIconified(true)に従って終了します。ただし、SearchViewをもう一度タップすると、OnClickListenerは起動されません。キーボードは引き続き表示され、フィールドは編集可能になりますが、OnClickListenerのコードは実行されません。
この後に「X」アイコンを使用して検索ビューを閉じると、すべて正常に戻ります。次にSearchViewをクリックすると、リスナーが起動します。
SearchViewをクリックするたびに実行する必要がある追加コードがあります。
この特定のインスタンスではリスナーが起動しない原因は何ですか? OnQueryTextSubmitで何かすべきことがありますか?
searchView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
filterLayout.setVisibility(View.VISIBLE);
searchView.setIconified(false);
System.out.println("on click");
}
});
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
filterLayout.setVisibility(View.INVISIBLE);
return false;
}
});
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
searchView.setIconified(true);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});