Ошибка в TextInputLayout больше не отображается даже при вызове setErrorEnabled(true)

У меня есть TextInputLayout как это

<android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/edt_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/title_what_should_we_call_you" />

</android.support.design.widget.TextInputLayout>

Для действительного имени, когда нажмите на кнопку Отправить, я использую

private boolean validateName() {
        if (edtName.getText().toString().trim().isEmpty()) {
            inputLayoutName.setErrorEnabled(true);
            inputLayoutName.setError("Enter name");    
            return false;
        } else {
            inputLayoutName.setErrorEnabled(false);
        }
        return true;
 }

Когда я запускаю приложение, не вводите значение для имени и не нажимайте Отправить, отображается сообщение об ошибке (исправить).
Затем я ввожу какое-то значение для имени -> нажмите Отправить -> ошибка скрыть (исправить)
Но затем я очищаю все имя -> нажмите Отправить -> ошибка не отображается

Почему это случилось? Любая помощь или предложение будет с благодарностью.

Если я не использую setErrorEnabled(false); и просто установить сообщение об ошибке на ноль, вид сообщения об ошибке все еще невидимым не исчез

1 ответ

Я сделал образец, чтобы проверить это, и все, что мне нужно было сделать, это:

if (edtName.getText().toString().trim().isEmpty()) {
      inputLayoutName.setError("Enter name");    
      return false;
} else {
      inputLayoutName.setErrorEnabled(false);
}

return true;

Ошибки появляются снова в соответствии с вашим вариантом использования. Можете ли вы проверить это, пожалуйста?

Другие вопросы по тегам