Как удалить входные данные из GoodieBag Pinview после проверки неверного вывода? - PullRequest
0 голосов
/ 04 июля 2018

Я использую GoodieBag Pinview для входа через пин-код в моем приложении. После ввода четырехзначного пин-кода, он проверяет пин-код. Но после проверки, если ввод пин-кода введен неправильно, курсор остается в последнем окне просмотра вывода. Мне нужно удалить все записи из полей просмотра выводов и курсор, чтобы перейти к первому блоку, если введен неверный вывод.

У меня есть другой сценарий, в котором я устанавливаю пин-код. Там у меня есть два pin-вида, один для ввода-вывода и другой для подтверждения-вывода. После ввода значений в enter-pin, мне нужно автоматически переместить курсор для подтверждения в первом окне. Но этого не происходит. Я должен вручную щелкнуть на первом поле подтверждения-булавки, чтобы установить пин-код.

Как бы я решил эту проблему?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Простой и удобный способ очистки pinview

if(codeinvalid){
 //call that method to clear pinview
  clearPinViewChild();
 }

Метод

  private void clearPinViewChild() {
    for (int i = 0; i < pin.getChildCount() ; i++) {
        EditText child = (EditText) pin.getChildAt(i);
        child.setText("");

    }
}
0 голосов
/ 12 июля 2018

Нет способа по умолчанию для удаления значений из pinView. Но я переопределяю событие нажатия клавиши удаления при просмотре, чтобы очистить значение в Pinview.

Попробуйте это

otpPinView.onKey(otpPinView.getFocusedChild(), KeyEvent.KEYCODE_DEL, new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_DEL));

Приведенный выше код удалит значение текущего значения в режиме просмотра. Если вы хотите очистить все значения, выполните цикл до тех пор, пока ваш Pin Pin .

Я пробовал что-то подобное

for (int i = 0;i < otpPinView.getPinLength();i++) {
        otpPinView.onKey(otpPinView.getFocusedChild(), KeyEvent.KEYCODE_DEL, new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_DEL));
}

Для сценария 2:

Попробуйте это

pinview1.setPinViewEventListener(new Pinview.PinViewEventListener() {
    @Override
      public void onDataEntered(Pinview pinview, boolean fromUser) {
            pinview2.requestFocus();
        }
});

Отредактированный

Примечание. Pinview - это группа текста редактирования. Поэтому, если вы хотите, чтобы курсор был виден в первом поле, которое является первым текстом редактирования, вам нужно установить метод requestFocus для просмотра потомков.

Вы можете попробовать ниже код

pinview1.setPinViewEventListener(new Pinview.PinViewEventListener() {
    @Override
      public void onDataEntered(Pinview pinview, boolean fromUser) {
            pinview2.getChildAt(0).requestFocus(); //0 is index of child.
        }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...