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;
}
¿Fue útil?

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
scroll top