Ich versuche, eine SearchView zu verwenden, und ich habe alles funktioniert, außer wenn ich eine leere Zeichenfolge suchen möchte.
Der onQueryTextChange reagiert nicht, wenn ich das letzte Zeichen entferne, aber ich möchte, dass der Benutzer die Suchschaltfläche drücken kann, wenn das Suchfeld leer ist.Android SearchView leere Zeichenfolge
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);
Ich habe auch versucht, einen OnKeyListner zu verwenden. aber es scheint auch nicht zu funktionieren.
searchView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
//Do something
return true;
}
});
Das scheint so eine einfache Sache zu tun, aber ich kann es nicht zur Arbeit bekommen. Irgendwelche Vorschläge?
bearbeiten
Ich habe jetzt eine Lösung für eine Weile sah und nur ein paar Minuten, nachdem dieses Posting, fand ich eine Lösung.
Auf diesem Thread fand ich heraus, dass dies kein Fehler war, aber es war tatsächlich absichtlich.
Android SearchView.OnQueryTextListener OnQueryTextSubmit not fired on empty query string
Also habe ich heruntergeladen ActionBarSherlock gerade und einige Änderungen an dem Verfahren onSubmitQuery gemacht()
Von
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();
}
}
}
und die modifizierte Version
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();
}
}
this helps wenn jemand anderes diesen pr Problem.
Anstatt Ihre ursprüngliche Frage zu bearbeiten, können Sie Ihre eigene Frage beantworten. – theblang