Manejar EditarTexto onKeyListener?
-
13-10-2019 - |
Pregunta
Estoy creando pantalla de acceso con 2 editTexts: etUsername y etPassword.
En el etUsername, el usuario debe introducir el nombre de usuario y pulse Intro para ir a la edición de texto etPassword, luego se introduce la contraseña, pulse Intro para iniciar sesión. Aquí está mi código actual:
etUsername.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_ENTER)) {
etPassword.requestFocus();
return true;
} else
return false;
}
});
etPassword.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_ENTER)) {
loginToServer();
return true;
} else
return false;
}
});
Pero cuando introduzca el nombre de usuario, y luego presione intro -. Los intentos de programa para iniciar sesión en el servidor
En el modo de depuración, vi que cuando apreté Introduzca una vez (en la etUsername), entonces en primer lugar: etUsername.onKey () se llama y luego también se llama etPassword.onKey ()!
¿Cómo puedo modificar el código para que el ENTER evento sólo se procesa una vez para el campo actual?
Solución
Antes de comprobar qué tecla se presiona, trate de añadir un cheque para el que se produce acontecimiento clave. Yo supongo que los primeros desencadenantes en el evento de tecla, entonces mover el foco al segundo campo de texto, y aquí también factores desencadenantes en el evento clave en marcha.
Vea aquí para ver un ejemplo sobre cómo comprobar tanto el tipo de evento y la clave: uso tecla "ENTER" en lugar del botón softkeyboard clic
No estoy 100% seguro de esto, pero vale la pena intentarlo: -)