Макет ввода текста вызывает ошибку в методе 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
решил мою проблему.