Как сосредоточиться на текущем EditText?

У меня есть 3 EditText (editText1, editText2 и editText3) в моем фрагменте. Когда я нажимаю «Далее» на своей программной клавиатуре, фокус в настоящее время переходит к следующему EditText. Я также проверяю, действительно ли содержимое этих полей редактирования (например, действительный адрес электронной почты и т. д.). Предположим, что 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, когда его собственное содержимое не удалось, он должен оставаться и держать фокус на себе. В противном случае он должен сосредоточиться на двух других оставшихся элементах editText, чтобы подтолкнуть пользователя к исправлению ошибки.

Но когда checkEditText1() терпит неудачу, он не фокусируется, как в первом предложении if...

Как правильно оставаться в текущем EditText?


person Tranquillo    schedule 04.12.2018    source источник
comment
Думаю, здесь не стоит усложнять. Если вам нужно продолжить только после того, как ваше первое значение EditText пройдет тест . Затем сделайте другие не фокусируемыми до тех пор. Подтвердите текстовое значение редактирования с помощью TextWatcher.   -  person ADM    schedule 04.12.2018


Ответы (1)


Использовать это:

     android:imeOptions="actionDone"

Не нужно слушать какие-либо keyEvent.

person kartik malik    schedule 04.12.2018
comment
когда я нажимаю editText1 готово, а checkEditText1() возвращает false, я хочу сосредоточиться на editText1 - person Tranquillo; 04.12.2018