В одном из моих действий у меня есть три EditText
s и кнопка OK. OnFocusChangeListener
настроен на все три EditText
с. Слушатель должен запускаться каждый раз, когда фокус теряется.OnFocusChange не всегда работает
Переключение между EditText
s работает отлично. Но если пользователь нажимает кнопку «ОК», нет изменения фокуса (потеря фокуса), вызванного для фокусировки пользователя до нажатия кнопки.
Что случилось с моим кодом?
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));
// ...
}
Это может вызвать включение OnFocusChange во всех трех EditText, поэтому я не могу его использовать. Но это помогло мне найти лучший способ. Теперь я храню EditText, который получает фокус в члене класса, и в OnClick кнопки я очищаю фокус этого конкретного EditText. Это работает как шарм. Большое спасибо. –