OnTextChanged не вызывается, когда длина edittext заполнена

У меня есть сценарий, в котором я разрешаю только 1 символ в тексте редактирования. поэтому в onTextChanged я проверил, введена ли одна буква, затем я переключаю фокус на следующий текст редактирования

<EditText
                android:id="@+id/etpinPassword1"
                style="@style/Edittext_with_weight"
                android:imeOptions="actionNext"
                android:inputType="number"
                android:maxLength="1" />

и вот мой код textWatcher:

onTextChanged :- >

if (isValueEntered(charSequence)) {
                    etpinPassword2.requestFocus();
                    etpinPassword2.setEnabled(true);
                    appendPassword(charSequence);
                }

private boolean isValueEntered(CharSequence charSequence) {
        return charSequence.length() > 0;
    }

Все работает нормально, за исключением того, что когда я возвращаюсь к уже заполненному тексту редактирования, onTextChanged никогда не вызывается. Я хочу вызвать его снова, чтобы переключить фокус на следующий текст редактирования, если первый уже заполнен.


person Gaurav Arora    schedule 12.09.2017    source источник
comment
вы удаляете текст при втором посещении заполненного edittext?   -  person Rajan Kali    schedule 12.09.2017
comment
Как вы собираетесь вернуться к заполненному EditText? Убедитесь, что он восстанавливает фокус. Также метод не будет вызываться, если вы не измените текст   -  person RED_    schedule 12.09.2017
comment
поместите свою операцию после того, как текст изменил слушателя.   -  person Kevan Aghera    schedule 12.09.2017
comment
@RED_ Я снова вручную щелкаю свой редактируемый текст, чтобы проверить отрицательные случаи.   -  person Gaurav Arora    schedule 12.09.2017
comment
@rajanks Нет, я не удаляю свой текст, я просто пытаюсь ввести другой текст и хочу, чтобы при вводе большего количества текста он перемещался в другой текст редактирования, поскольку текущий уже заполнен   -  person Gaurav Arora    schedule 12.09.2017
comment
См. мое решение для пин-кода здесь: stackoverflow.com/a/54464357/2914140.   -  person CoolMind    schedule 01.02.2019


Ответы (1)


Проблема в том, что вы установили максимальную длину на 1, поэтому это не позволит вам ввести другой символ.

person Rajan Kali    schedule 12.09.2017
comment
Как я могу сделать обе вещи, я хочу установить maxLength как 1, а также хочу проверить, печатает ли пользователь после ввода 1 цифры - person Gaurav Arora; 12.09.2017
comment
зачем пользователю вводить другой символ, не удаляя его? - person Rajan Kali; 12.09.2017
comment
Я хочу справиться с этим, что, если он уже набран, а пользователь все еще печатает, он должен перейти к другому тексту редактирования. На самом деле я делаю четырехзначный вид булавки, где у меня есть четыре текста редактирования с maxLength равным 1 для каждого текста редактирования. - person Gaurav Arora; 13.09.2017