私はSearchViewを使用しようとしていますが、空の文字列を検索する場合を除いて、すべて機能するようになっています。
最後の文字を削除するとonQueryTextChangeが反応しますが、検索フィールドが空のときにユーザーが検索ボタンを押すことができるようにします。Android SearchViewの空の文字列
final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// Do something
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
// Do something
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
また、OnKeyListnerを試してみました。しかし、どちらもうまくいかないようです。
searchView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
//Do something
return true;
}
});
これは簡単なことですが、動作させることはできません。助言がありますか?
編集
私は今、しばらくのためのソリューションを探していると、ちょうど数分これを投稿した後、私は解決策を見つけました。
このスレッドでは、バグではないことがわかりましたが、実際は意図的でした。
Android SearchView.OnQueryTextListener OnQueryTextSubmit not fired on empty query string
だから、僕はActionBarSherlockをダウンロードし、方法onSubmitQuery(にいくつかの変更をした)
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
if (query != null && TextUtils.getTrimmedLength(query) > 0) {
if (mOnQueryChangeListener == null
|| !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
if (mSearchable != null) {
launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString());
setImeVisibility(false);
}
dismissSuggestions();
}
}
}
そして、修正版
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
if(query == null) {query = "";}
if (mOnQueryChangeListener == null
|| !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
if (mSearchable != null) {
launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString());
setImeVisibility(false);
}
dismissSuggestions();
}
}
・ホープ、このことができますから、他の誰かがこのprを持っているならオベレム。
オリジナルの質問を編集するのではなく、自分の質問に答えることができます。 – theblang