У меня есть EditText, просматриваемый TextWatcher, который проверяется с помощью Pattern, Matcher и регулярного выражения. Это работает почти нормально. Когда пользователь вводит символ в EditText, TextWatcher запускает метод onTextChanged и проверяет введенный символ. Все работает нормально, есть значок ошибки в правой части EditText и всплывающее окно с надписью «ошибка». ХОРОШО. Теперь, когда пользователь вводит второй символ, всплывающее окно и значок ошибки исчезают. Третий символ, это снова появляется. Далее оно исчезает и так далее и тому подобное .... Почему? Как сделать так, чтобы значок и всплывающее окно всегда были видны при возникновении ошибки? Код:
public EditTextValidator(EditText editText, String patternString, String errorString)
{
this.editText = editText;
this.errorString = errorString;
this.patternString = patternString;
}
@Override
public void afterTextChanged(Editable s)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(s);
if (!matcher.matches())
{
editText.setError(errorString);
} else
{
editText.setError(null);
}
}
private EditText editText;
private String errorString;
private String patternString;
}
Я использую Android 2.1 Sdk (Api 7)