Макет ввода текста вызывает ошибку в методе setError

Я применяю setError() метод на TextInputLayout а также TextInputEditText но я получаю эту ошибку,

Я пытаюсь добиться всплывающей подсказки об ошибках. У меня нет настроения использовать сторонние библиотеки для достижения этой цели.\

Вот что я пробовал, и ничего из этого не сработало,

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

TextInputLayout setErrorEnabled не создает новый объект TextView

TextInputLayout.setError() оставляет пустое пространство после очистки ошибки

TextInputLayout не показывает сообщение об ошибке после очистки

setError для TextInputLayout показывает ошибку

Ошибка TextInputLayout после ввода значения в текст редактирования

textinputlayout с ошибками и показывает ошибки

textinputlayout с ошибками и показывает ошибки

TextInputLayout errorview не удаляется при удалении сообщения об ошибке

Gradle

compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:cardview-v7:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'

Ошибка Stacktrace,

Process: com.example.demo, PID: 31847
                                                                       java.lang.UnsupportedOperationException: Failed to resolve attribute at index 24: TypedValue{t=0x3/d=0x1ec "res/color/secondary_text_material_dark.xml" a=1 r=0x1060120}
                                                                           at android.content.res.TypedArray.getColor(TypedArray.java:449)
                                                                           at android.widget.TextView.<init>(TextView.java:741)
                                                                           at android.widget.TextView.<init>(TextView.java:674)
                                                                           at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:62)
                                                                           at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:58)
                                                                           at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:54)
                                                                           at android.support.design.widget.TextInputLayout.setErrorEnabled(TextInputLayout.java:602)
                                                                           at com.example.demo.DemoActivity.canLogin(DemoActivity.java:163)
                                                                           at com.example.demo.DemoActivity.access$000(DemoActivity.java:24)
                                                                           at com.example.demo.DemoActivity$1.onClick(DemoActivity.java:54)
                                                                           at android.view.View.performClick(View.java:5207)
                                                                           at android.view.View$PerformClick.run(View.java:21177)
                                                                           at android.os.Handler.handleCallback(Handler.java:742)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                           at android.os.Looper.loop(Looper.java:154)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5527)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)

Вот XML

<android.support.design.widget.TextInputLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:hint="UserName"
        android:theme="@style/txtIptLayout"
       android:layout_marginTop="10dp"
       app:backgroundTint="@color/white"
        android:id="@+id/tilUsername"
       app:errorTextAppearance="@style/Theme.AppCompat"
       >
     <android.support.design.widget.TextInputEditText
         style="@style/txtEditTxtLayout"
         app:backgroundTint="@color/white"
         android:id="@+id/etUserName"
         android:maxLines="1"
         android:inputType="text"

         />

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

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        android:theme="@style/txtIptLayout"
        app:passwordToggleEnabled="true"
        app:passwordToggleDrawable="@drawable/ic_widget_icon_txtiptlayout"
        app:passwordToggleTint="@color/white"
        android:layout_marginTop="10dp"
        app:backgroundTint="@color/white"
       app:errorTextAppearance="@style/Theme.AppCompat"
        android:id="@+id/tilPassword"
        >
        <android.support.design.widget.TextInputEditText
           style="@style/txtEditTxtLayout"
            android:inputType="textPassword"
            android:id="@+id/etPassword"
            app:backgroundTint="@color/white"


            />

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

Вот то, что я применяю, и именно здесь выдается ошибка,

tilPassword.setError("Password required");
                tilPassword.setErrorEnabled(true);

2 ответа

Не уверен, как, но удаление атрибута темы в XML android:theme="@style/txtIptLayout" работал. Предполагается, что переопределение темы из XML переопределит тему для всплывающей подсказки и, следовательно, ошибку.

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

  tilPassword.getEditText().setError("Password required");
  tilPassword..setErrorEnabled(true);

Что ж, это происходит, когда вы пытаетесь переопределить тему из XML, она также переопределяет функции по умолчанию. я столкнулся с аналогичной проблемой, когда я создавал стиль воспитания TextAppearance.AppCompat,

Заменить его на Theme.AppCompat решил мою проблему.

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