KeyListener sur SearchView dans Honeycomb Action Bar ne fonctionne pas
-
28-10-2019 - |
Question
Voici mon code. La méthode onKey () n'est jamais appelée lors de la saisie dans la zone de recherche. Est-ce que je fais quelque chose de mal dans la configuration de l'auditeur? J'ai un point d'arrêt dans la méthode onkey (), c'est ainsi que je sais qu'il ne se déclenche pas.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.locations_map_menu, menu);
ActionBar ab = getActionBar();
ab.setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar));
ab.setDisplayShowTitleEnabled(false);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
return true; // This code never fires
}
});
return true;
}
La solution
Ajouter un OnQueryTextListener
, voir ma réponse ici
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);
Autres conseils
Si vous souhaitez obtenir une clé sur la vue Serach, vous pouvez utiliser le code ci-dessous
TextView searchText = (TextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
return false;
}
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow