Android: Как я могу проверить вход EditText?

Я должен сделать контроль ввода формы на серии EditTexts. Я использую OnFocusChangeListeners для инициирования проверки после пользовательских типов в каждого, но это не ведет себя, как желаемый для последнего EditText.

Если я нажимаю на кнопку "Done" при вводе в заключительный EditText затем, InputMethod разъединяется, но технически, никогда сфокусируйтесь не теряется на EditText (и таким образом, проверка никогда не происходит).

Каково лучшее решение?

Я должен контролировать, когда InputMethod развязывает от каждого EditText скорее чем, когда фокус изменяется? Если так, как?

165
задан Stefan 4 May 2010 в 05:35
поделиться

1 ответ

Почему бы вам не использовать TextWatcher ?

Поскольку у вас есть несколько блоков EditText , которые нужно проверить, я думаю вам подойдет следующее:

  1. Ваша активность реализует android.text.TextWatcher interface
  2. Вы добавляете слушателей TextChanged в свои поля EditText
txt1.addTextChangedListener(this);
txt2.addTextChangedListener(this);
txt3.addTextChangedListener(this);
  1. Из переопределенных методов вы можете использовать afterTextChanged (Editable s) следующим образом
@Override
public void afterTextChanged(Editable s) {
    // validation code goes here
}

Метод Editable s на самом деле не помогает определить, какой текст в поле EditText изменяется. Но вы можете напрямую проверить содержимое полей EditText, таких как

String txt1String = txt1.getText().toString();
// Validate txt1String

, тем же методом. Я надеюсь, что все понятно, и если да, то это поможет! :)

РЕДАКТИРОВАТЬ: Для более чистого подхода обратитесь к ответу Кристофера Перри ниже.

151
ответ дан 23 November 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: