web-dev-qa-db-fra.com

RuntimeException lors de l'utilisation du nouveau TextInputLayout à partir de la bibliothèque de conception prise en charge

J'ai une disposition très simple où j'utilise la nouvelle vue Android.support.design.widget.TextInputLayout de Bibliothèque de support technique

<Android.support.design.widget.TextInputLayout
    Android:id="@+id/til"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content">
    <EditText
        Android:id="@+id/textDialog"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:hint="First Name"/>
</Android.support.design.widget.TextInputLayout>

Sur gonfler je reçois une exception:

Caused by: Java.lang.RuntimeException: Failed to resolve attribute at index 18
            at Android.content.res.TypedArray.getColor(TypedArray.Java:401)
            at Android.support.design.widget.CollapsingTextHelper.setCollapsedTextAppearance(CollapsingTextHelper.Java:166)
            at Android.support.design.widget.TextInputLayout.<init>(TextInputLayout.Java:106)
            at Java.lang.reflect.Constructor.newInstance(Native Method)
            at Java.lang.reflect.Constructor.newInstance(Constructor.Java:288)
            at Android.view.LayoutInflater.createView(LayoutInflater.Java:607)
            at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:743)
            at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:365)
            at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:381)
            at Android.app.Activity.setContentView(Activity.Java:2144)
            at com.example.trybindinglib.MainActivity.onCreate(MainActivity.Java:24)
            at Android.app.Activity.performCreate(Activity.Java:5933)
            at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
            at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2298)
            at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2407)
            at Android.app.ActivityThread.access$800(ActivityThread.Java:149)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1324)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:211)
            at Android.app.ActivityThread.main(ActivityThread.Java:5321)
            at Java.lang.reflect.Method.invoke(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:372)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1016)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:811)
14
Aleksey Masny

Avez-vous ajouté la bibliothèque de support technique de conception? Ajoutez la dépendance:

compile 'com.Android.support:design:22.2.0'

à votre build.gradle 

15
Luchi Valles

Si vous utilisez Theme.AppCompat comme thème de l'application de base, définissez-y la textColorError. TextInputLayout doit être utilisé dans ses états d'erreur. Sinon, le journal des collisions s'affichera comme indiqué ci-dessus.

Exemple:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="textColorError"> @color/design_textinput_error_color_light </item>
</style>

C'est @color/design_textinput_error_color_light pour AppCompat.Light et @color/design_textinput_error_color_dark pour AppCompat.Dark.

9
Asha Antony

Assurez-vous que le thème de l'application étend le thème AppCompat.

    <!-- Base application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat">
        <!-- Customize your theme here. -->
    </style>
6
Aleksey Masny

J'ai eu le même problème sur une application brute générée avec Android Studio.

Je l'ai résolu en ajoutant d'abord la dépendance suivante à mon build.gradle Compile 'com.Android.support:appcompat-v7:22.2.0'

Ensuite, j'ai dû modifier la base du thème en @ style/Theme.AppCompat comme suggéré par Aleksey. Remarquez ici que vous devrez probablement renommer votre thème de base, car il en existe un du même nom ( AppTheme ) dans la bibliothèque appcompat, et AS semble avoir été dérangé entre les deux ...

J'espère que cela t'aides!

4
malrok44

getColor se bloque, vous pouvez essayer deux choses: 

1.Au lieu d'utiliser EditText, utilisez Android.support.v7.widget.AppCompatEditText. Par exemple:

<Android.support.design.widget.TextInputLayout
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                app:errorEnabled="true">
                <Android.support.v7.widget.AppCompatEditText
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:hint="First Name"
                    Android:inputType="textPersonName"
                    Android:singleLine="true" />

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

2.Si cela n’aide en rien, cela pourrait peut-être, mais la couleur de votre indice sera supprimée lorsque le champ de saisie est sélectionné. Ajouter:

            app:hintTextAppearance="@Android:style/TextAppearance.Small"

à votre TextInputLayout.

1
Frank

Assurez-vous que votre XML ressemble à:

<Android.support.design.widget.TextInputLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <EditText
        Android:id="@+id/search"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="search" />
</Android.support.design.widget.TextInputLayout>

exemple complet:

http://hmkcode.com/Android-textinputlayout/

Pas de changement de thème

1
itzhar