W jednej z moich aktywności mam trzy EditText
s i przycisk OK. OnFocusChangeListener
jest ustawiony na wszystkie trzy EditText
s. Słuchacz powinien uruchamiać się za każdym razem, gdy utracono ostrość.OnFocusChange nie zawsze działa
Przełączanie między EditText
s działa idealnie. Ale jeśli użytkownik naciśnie przycisk OK, nie zostanie wywołana zmiana ostrości (utrata ostrości) dla użytkownika EditText
, gdy użytkownik skupi się przed naciśnięciem przycisku.
Co jest nie tak z moim kodem?
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));
// ...
}
To prawdopodobnie spowoduje włączenie OnFocusChange we wszystkich trzech EditText, więc nie będę mógł go użyć. Pomogło mi to jednak znaleźć lepszy sposób. Przechowuję teraz EditText, który skupia się na członku klasy, a OnClick przycisku Usuwam fokus tego konkretnego EditText. To działa jak urok. Wielkie dzięki. –