Ошибка при установке setError ("") с TextInputLayout? - PullRequest
0 голосов
/ 28 июня 2019

Ниже мой код;

XML

  <android.support.design.widget.TextInputLayout
                android:id="@+id/emailTxtLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:theme="@style/TextLabel"
                android:layout_centerVertical="true"
                android:layout_toRightOf="@+id/button1">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/edt_editemail"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890@."
                    android:fontFamily="@font/poppins_light"
                    android:hint="@string/e_mail"
                    android:inputType="textEmailAddress"
                    android:maxLines="1"
                    android:singleLine="true"
                    android:textColor="@color/gray"
                    android:textColorHint="@color/gray"
                    android:textSize="@dimen/sp_16" />

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

Style

   <style name="TextLabel" parent="Theme.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/gray</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/darkgreen</item>
    <item name="colorControlNormal">@color/gray</item>
    <item name="colorControlActivated">@color/darkgreen</item>
</style>

<style name="ErrorText" parent="TextAppearance.Design.Error">
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">@color/darkorange</item>
</style>

Код

EditText edt_editemail;
TextInputLayout emailTxtLayout;

 edt_editemail = findViewById(R.id.edt_editemail);
 emailTxtLayout = findViewById(R.id.emailTxtLayout);

Ниже зависимости, которые я использовал прямо сейчас;

implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'

когда я использую приведенный ниже код и нажимаю кнопку подтверждения, я получаю ошибку;

emailTxtLayout.setError(getString(R.string.valid_email_id_error));

Ошибка ниже, чем я получаю;

java.lang.UnsupportedOperationException: не удалось разрешить атрибут в индексе 4: TypedValue {t = 0x2 / d = 0x1010099 a = 1} на android.content.res.TypedArray.getColor (TypedArray.java:462) на android.widget.TextView. (TextView.java:798) на android.widget.TextView. (TextView.java:732) на android.support.v7.widget.AppCompatTextView. (AppCompatTextView.java:87) на android.support.v7.widget.AppCompatTextView. (AppCompatTextView.java:83) на android.support.v7.widget.AppCompatTextView. (AppCompatTextView.java:79) на android.support.design.widget.IndicatorViewController.setErrorEnabled (IndicatorViewController.java:422) на android.support.design.widget.TextInputLayout.setErrorEnabled (TextInputLayout.java:938) на android.support.design.widget.TextInputLayout.setError (TextInputLayout.java:1055) в com.qltech.cunsumer.yupit.activities.RegisterActivity $ 4.onClick (RegisterActivity.java:307) на android.view.View.performClick (View.java:5675) на android.view.View $ PerformClick.run (View.java:22646) на android.os.Handler.handleCallback (Handler.java:836) на android.os.Handler.dispatchMessage (Handler.java:103) на android.os.Looper.loop (Looper.java:203) на android.app.ActivityThread.main (ActivityThread.java:6251) в java.lang.reflect.Method.invoke (родной метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1075) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)

Color.xml

<color name="colorPrimary">#FFFFFF</color>
<color name="colorPrimaryDark">#669b00</color>
<color name="colorAccent">#F05522</color>
<color name="darkorange">#F05522</color>
<color name="white">#FFFFFF</color>
<color name="black">#313131</color>
<color name="header_color">#eeeeee</color>
<color name="edit_text_line_color">#dddddd</color>
<color name="dark_black">#000000</color>
<color name="darkgreen">#99cc33</color>
<color name="green">#99cc33</color>
<color name="gray">#666666</color>
<color name="light_gray_b">#999999</color>
<color name="light_gray">#f5f5f5</color>
<color name="dark_gray">#e1e1e1</color>
<color name="transparent_color">#44000000</color>

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Измените свой макет следующим образом

<android.support.design.widget.TextInputLayout
            android:id="@+id/emailTxtLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:theme="@style/TextLabel"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/button1"
            app:errorEnabled="true">

Этот атрибут необходим для отображения ошибки

app:errorEnabled="true"

, затем вызовите,

emailTxtLayout.setError(getString(R.string.valid_email_id_error));
0 голосов
/ 28 июня 2019

Вы можете попробовать

  1. app:errorEnabled="true"
  2. setErrorTextAppearance
  3. Удалить android:theme="@style/TextLabel"

XML

<android.support.design.widget.TextInputLayout
    app:errorEnabled="true"
    app:errorTextAppearance="@style/ErrorStyle"
    >

Затем

<style name="ErrorStyle" parent="TextAppearance.Design.Error">
        <item name="android:textSize">15sp</item>
        <item name="android:textColor">@color/darkorange</item>
    </style>

Включена ли функция ошибок в этом макете.Включение этой функции перед установкой сообщения об ошибке через setError (CharSequence) будет означать, что этот макет не изменит размер при отображении ошибки.

FYI

UnsupportedOperationException Брошенный, чтобы указать, что запрошенная операция не поддерживается.

Наконец Clean-Rebuild-Run.

...