Search code examples
androidmaterial-designandroid-design-library

setError for TextInputLayout showing Error


TextInputLayout working fine, when tried to set Error it showing error.

Code:

 if (etFirstName.getText().length() == 0) {
            etFirstName.requestFocus();
            tvFirstName.setError("Please enter firstname");
        } else {
            tvFirstName.setError(null);
            tvFirstName.setErrorEnabled(false);
        }

Check Log:

java.lang.RuntimeException: Failed to resolve attribute at index 24
            at android.content.res.TypedArray.getColor(TypedArray.java:401)
            at android.widget.TextView.<init>(TextView.java:692)
            at android.widget.TextView.<init>(TextView.java:629)
            at android.widget.TextView.<init>(TextView.java:625)
            at android.widget.TextView.<init>(TextView.java:621)
            at android.support.design.widget.TextInputLayout.setErrorEnabled(TextInputLayout.java:297)
            at android.support.design.widget.TextInputLayout.setError(TextInputLayout.java:344)

Solution

  • Give valid style for your TextInputLayout( android:theme="@style/Theme.AppCompat")

    <android.support.design.widget.TextInputLayout
      android:id="@+id/testingInputLayout"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:theme="@style/Theme.AppCompat">
    
    <EditText
       android:id="@+id/testingEditText"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:hint="@string/testText"
       android:inputType="textEmailAddress" />
    
    </android.support.design.widget.TextInputLayout>
    

    You need to add appCompat & support design dependency (if not)

    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    

    In your manifest file add AppCompat theme,

    <application
     ...
    android:theme="@style/Theme.AppCompat">