En una de mis actividades tengo tres EditText
sy un botón Aceptar. El OnFocusChangeListener
se establece en los tres EditText
s. El oyente debe activarse cada vez que se pierde el foco.OnFocusChange no siempre funciona
El cambio entre EditText
s funciona a la perfección. Pero si el usuario presiona el botón Aceptar, no hay ningún cambio de enfoque (perder el foco) activado para el EditText
que el usuario enfocó antes de presionar el botón.
¿Qué pasa con mi código?
private class MyOnFocusChangeListener implements OnFocusChangeListener {
private EditText editText;
public MyOnFocusChangeListener(final EditText editText) {
super();
this.editText = editText;
}
@Override
public void onFocusChange(final View view, final boolean isFocused) {
if (!isFocused) {
if (editText == editText1) {
// Do a calculation
} else if (editText == editText2) {
// Do another calculation
} else if (editText == editText3) {
// Do a different calculation
}
}
}
}
@Override
public void onCreate(final Bundle bundle) {
// ...
editText1.setOnFocusChangeListener(new MyOnFocusChangeListener(editText1));
editText2.setOnFocusChangeListener(new MyOnFocusChangeListener(editText2));
editText3.setOnFocusChangeListener(new MyOnFocusChangeListener(editText3));
// ...
}
Esto posiblemente desencadenaría OnFocusChange en los tres EditText, así que no puedo usarlo. Pero esto me ayudó a encontrar una mejor manera. Ahora guardo el EditText que obtiene el foco en un miembro de la clase y en OnClick del botón borro el foco de ese EditText en particular. Eso funciona como un encanto. Muchas gracias. –