He adjuntado OnKeyListener a EditText. He anulado el controlador onKey para capturar un KeyEvent.Ingrese la clave en EditText tocando onKey dos veces
Cuando un usuario pulsa la tecla Intro (ya sea que la computadora ingrese la clave mientras usa el emulador o la tecla de ingreso de hardware en su teléfono con un teclado de hardware), el controlador onKey se ejecuta dos veces. Ambas ejecuciones tienen el código clave 66.
¿Por qué sucede esto?
Quiero mi pantalla para que cuando el usuario pulse la tecla Intro, se realice una búsqueda. Debido a lo que está sucediendo, la búsqueda está sucediendo innecesariamente dos veces.
Mi método es el siguiente:
mFilter.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
// perform search
return true;
}
return false;
}
});
Probablemente. Compruebe el 'KeyEvent', no solo el código. Sin embargo, he encontrado algunos problemas históricamente con el teclado HTC que activan varios eventos (y a veces los usuarios simplemente espacian y presionan "enter" varias veces de todos modos), así que querrás mantener una variable de instancia en tu oyente para rastrear cuando la acción se ha activado para que pueda evitar una segunda descarga accidental. –
Buena idea. Creo que, cuando se inicie la tarea de búsqueda, iniciaré otra tarea con un temporizador de unos segundos y, hasta que termine esa secuencia, el usuario no podrá presionar la tecla Intro nuevamente. – Andrew
Esto no debe marcarse como respuesta, marque una de las siguientes respuestas (más útiles) como respuesta (recomendaría Abdul's). Gracias. – Stunner