web-dev-qa-db-fra.com

Erreur Android TextInputField Inflator

J'ai eu un crash en essayant d'utiliser la nouvelle TextInputField pour Android et je voulais partager ma solution.

Essayer le nouveau TextInputField dans la bibliothèque Android appcompat plantait mon application. Voici ma mise en page XML.

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

    <EditText
        Android:id="@+id/email"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="e-mail"
        Android:inputType="textEmailAddress"
        Android:singleLine="true"/>

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

L'erreur que j'ai eu:

Android.view.InflateException: Binary XML file line #20: Error inflating class Android.support.design.widget.TextInputLayout.

SOLUTION: Ajoutez l'attribut hintTextAppearance à votre TextInputLayout, afin que la balise lead ressemble à ceci:

<Android.support.design.widget.TextInputLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:hintTextAppearance="@Android:style/TextAppearance.Medium">
27
eimmer

Assurez-vous d'avoir les dépendances suivantes dans votre fichier gradle:

compile 'com.Android.support:appcompat-v7:22.2.0'
compile 'com.Android.support:design:22.2.0'

Exemple de travail:

<Android.support.design.widget.TextInputLayout
    Android:id="@+id/txtEmail_InpLyt"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">
    <EditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:inputType="textEmailAddress"
        Android:ems="10"
        Android:id="@+id/txtEmail"
        Android:hint="Email Address"
        Android:singleLine="true"
        Android:layout_alignParentTop="true"
        Android:layout_alignParentRight="true"
        Android:layout_alignParentEnd="true"/>
</Android.support.design.widget.TextInputLayout>

(Il n'est pas nécessaire de définir hintTextAppearance.)

Mettre à jour:

Si vous rencontrez des problèmes avec le texte de conseil n'apparaissant pas dans les versions plus récentes d'Android (Marshmallow/Nougat), mettez à jour la bibliothèque vers la version 22.2.1 (voir TextInputLayout n'indiquant pas de conseil EditText avant que l'utilisateur ne se concentre dessus ).

compile 'com.Android.support:appcompat-v7:22.2.1'
compile 'com.Android.support:design:22.2.1'
38
Rachel

Cela m'est aussi arrivé et j'ai proposé une solution qui ne nécessite pas de changer le thème de l'application, mais simplement de changer le thème de TextInputLayout

<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>

Vous devrez ajouter la bibliothèque appCompat si vous n'avez pas déjà:

compile 'com.Android.support:appcompat-v7:23.0.1'
22
Phil

J'ai eu le même problème en gonflant du XML contenant TextInputLayout. Le problème a été corrigé en définissant le style correct sur mon application. Juste comme il est dit ici: Bibliothèque de support de conception Android

J'ai le numéro suivant

Caused by: Android.view.InflateException: Binary XML file line #38: Error inflating class Android.support.design.widget.TextInputLayout

Mon style.xml était

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Android:Theme.Material">
        <!-- Customize your theme here. -->
    </style>
</resources>

Comme il est dit dans ce post sur Design Support Library

Notez que, puisque la bibliothèque de conception dépend des bibliothèques de support Support v4 et AppCompat, celles-ci seront automatiquement incluses lorsque vous ajoutez la dépendance de la bibliothèque de conception.

Donc, PAS BESOIN D'AJOUTER la ligne suivante dans le fichier Gradle

compile 'com.Android.support:appcompat-v7:22.2.0'

J'ai trouvé un lien expliquant que la bibliothèque de support technique de conception fait partie de AppCompat et nécessite la base de thème AppCompat pour fonctionner. Alors J'ai modifié mon style.xml pour être 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>
</resources>

Et ça a fonctionné.

4
Pierre Teyssedre

Utilisez le suivant:

View view = LayoutInflator.from(getActivity()).inflate(R.layout.your_layout_file,parent,false);
1
Khalid Taha

Assurez-vous que LayoutInflater est créé à partir d'un AppCompatActivity

ex. 

au lieu de

inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

utilisation:

inflater = LayoutInflater.from(<appCompatActivity>);
0
thusith.92

J'ai eu le même problème avec Android Studio 3.0.1

Tout ce dont vous avez besoin pour ajouter la ligne suivante dans gradle.properties (Propriétés du projet) :

Android.enableAapt2 = false

0
Argha Kundu

Aucune des solutions n'a fonctionné pour moi. j'utilise 

compile 'com.Android.support:appcompat-v7:28.0.0'
compile 'com.Android.support:design:28.0.0'

J'ai essayé toute la solution. Mon application fonctionne parfaitement dans les appareils avec SDK inférieur. Mais les accidents dans les nouveaux périphériques (supérieur à SDK 26). Mais après avoir gratté la tête pendant 2 jours, nous avons enfin trouvé la solution.

mon éditeur de mise en page a montré l'erreur de 

The following classes could not be instantiated: - Android.support.design.widget.TextInputLayout

 enter image description here Mais cela ne m'a pas donné assez d'informations pour travailler. Ce n'est que lorsque j'ai examiné d'autres erreurs de l'éditeur de mise en page. Sous le problème de rendu j'ai trouvé que

Couldn't resolve resource @string/path_password_strike_through

 enter image description here

J'ai finalement eu la solution après avoir étudié ce problème de rendu. Tout ce que vous avez à faire est d’ajouter 

app:passwordToggleDrawable="@string/string_name"

dans votre fichier XML TextInputLayout.

                <Android.support.design.widget.TextInputLayout
                    Android:id="@+id/login_input_layout_password"
                    Android:layout_width="match_parent"
                    app:passwordToggleDrawable="@drawable/ic_lock_outline_grey600_24dp"
                    Android:layout_height="wrap_content"
                    Android:layout_marginLeft="30dp"
                    Android:layout_marginRight="30dp"
                    Android:layout_marginTop="10dp"
                    Android:backgroundTint="@color/colorAccent"
                    app:boxStrokeColor="#555"
                    Android:textColorHint="@color/colorPrimary">

                    <EditText
                        Android:id="@+id/login_input_password"
                        Android:layout_width="match_parent"
                        Android:layout_height="wrap_content"
                        />

                </Android.support.design.widget.TextInputLayout>
0
Ratul Bin Tazul

pour moi, le travail change de EditText à TextInputEditText

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

    <Android.support.design.widget.TextInputEditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="@string/date_raffle"/>

</Android.support.design.widget.TextInputLayout>
0
Enzo Lizama

vous l'avez peut-être ajouté compile 'com.Android.support:appcompat-v7:22.2.0' mais vous devez ajouter compile 'com.Android.support:design:22.2.0'

vous pouvez essayer ces dépendances:

compile 'com.Android.support:appcompat-v7:22.2.0'
compile 'com.Android.support:design:22.2.0'

dans votre fichier de classement.

0
tugbacevizci