Как сохранить фокус на текущем EditText?
У меня есть 3 EditText (editText1, editText2 и editText3) в моем фрагменте. Когда я нажимаю "Далее" на моей программной клавиатуре, фокус в настоящее время переходит к следующему тексту редактирования. Я также проверяю, является ли содержимое этих правок (например, действительное электронное письмо и т. Д.) Действительным. Предположим, что checkEditText_() работает правильно.
Для editText1 я решил, что вроде:
editText1.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_NAVIGATE_NEXT)) {
if (!checkEditText1()) { // editText1 content fail
editText1.clearFocus();
editText1.requestFocus();
edi tText1.selectAll();
} else if (!checkEditText2()) { // editText2 content fail
editText1.clearFocus();
editText2.requestFocus();
} else if (!checkEditText3()){ // editText3 content fail
editText1.clearFocus();
editText3.requestFocus();
}
return true;
}
return false;
}
});
Для editText1, когда его собственный контент не завершен, он должен оставаться и сохранять фокус на себе. В противном случае он должен сосредоточиться на двух других оставшихся текстах редактирования, чтобы подтолкнуть пользователя к исправлению ошибки.
Но когда checkEditText1() терпит неудачу, он не фокусируется, как в первом предложении if...
Как я могу оставаться в текущем EditText правильно?
1 ответ
Использовать этот:
android:imeOptions="actionDone"
Нет необходимости слушать какие-либо ключевые события.