Keylistener en SearchView en Honeycomb Action Bar no funciona
-
28-10-2019 - |
Pregunta
Aquí está mi código. El método OnKey () nunca se llama al escribir en el cuadro de búsqueda. ¿Estoy haciendo algo mal al configurar el oyente? Tengo un punto de interrupción en el método Onkey (), que es cómo sé que no se dispara.
@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;
}
Solución
Agregar un OnQueryTextListener
, mira mi respuesta aquí
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);
Otros consejos
Si desea obtener una clave en la vista de Serach, puede usar el siguiente código
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;
}
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow