J'essaie d'utiliser un SearchView et j'ai tout fait fonctionner, sauf quand je veux rechercher une chaîne vide.
L'onQueryTextChange réagit lorsque je supprime le dernier caractère, mais je souhaite que l'utilisateur puisse appuyer sur le bouton de recherche lorsque le champ de recherche est vide.Android SearchView chaîne vide
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);
J'ai également essayé d'utiliser un OnKeyListner. mais cela ne semble pas fonctionner non plus.
searchView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
//Do something
return true;
}
});
Cela semble une chose si simple à faire, mais je n'arrive pas à le faire fonctionner. Aucune suggestion?
Modifier
J'ai cherché une solution pour un certain temps maintenant et que quelques minutes après la publication, je trouve une solution.
Sur ce fil, j'ai découvert que ce n'était pas un bug, mais c'était délibéré.
Android SearchView.OnQueryTextListener OnQueryTextSubmit not fired on empty query string
Je viens de télécharger ActionBarSherlock et fait quelques modifications à la méthode onSubmitQuery()
De
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();
}
}
}
Et la version modifiée
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();
}
}
Hope this helps si quelqu'un d'autre a ce pr oblem.
Plutôt que d'éditer votre question originale, vous pouvez répondre à votre propre question. – theblang