web-dev-qa-db-fra.com

InflateException lors de l'utilisation de TextInputLayout

J'essaie d'utiliser TextInputEditText de Material Design ( https://github.com/material-components/material-components-Android/blob/master/docs/components/TextInputLayout.md ) et j'obtiens exception d'exécution.

Cela fait partie du journal d'exécution:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.grigori.materialtextedit, PID: 12036
              Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.grigori.materialtextedit/com.example.grigori.materialtextedit.MainActivity}: Android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class com.google.Android.material.textfield.TextInputLayout
                  at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2913)
                  at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:3048)
                  at Android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.Java:78)
                  at Android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.Java:108)
                  at Android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.Java:68)
                  at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1808)
                  at Android.os.Handler.dispatchMessage(Handler.Java:106)
                  at Android.os.Looper.loop(Looper.Java:193)
                  at Android.app.ActivityThread.main(ActivityThread.Java:6669)
                  at Java.lang.reflect.Method.invoke(Native Method)
                  at com.Android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.Java:493)
                  at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:858)
               Caused by: Android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class com.google.Android.material.textfield.TextInputLayout
               Caused by: Android.view.InflateException: Binary XML file line #9: Error inflating class com.google.Android.material.textfield.TextInputLayout
               Caused by: Java.lang.ClassNotFoundException: Didn't find class "com.google.Android.material.textfield.TextInputLayout" on path: DexPathList

J'ai coupé ce journal par DexPathList qui contient de nombreux chemins d'accès aux fichiers apk, tels que:

Zip file "/data/app/com.example.grigori.materialtextedit-jamgTcrgG9neBKIMcqDo7Q==/base.apk"

Mon fichier XML:

<Android.support.constraint.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context=".MainActivity">

<com.google.Android.material.textfield.TextInputLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <com.google.Android.material.textfield.TextInputEditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="@string/hint_text"/>

</com.google.Android.material.textfield.TextInputLayout>

Mes dépendances build.gradle:

    dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.Android.support:appcompat-v7:28.0.0-rc01'
implementation 'com.Android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.Android.support.test:runner:1.0.2'
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'}     
3
grasdy

Face à ce problème lors de la mise en œuvre AndroidX dans mon projet existant.

implementation 'com.google.Android.material:material:1.0.0-beta01'

Layout XML

<com.google.Android.material.textfield.TextInputLayout
    Android:id="@+id/userNameWrapper"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:theme="@style/TextLabel">

Style ancien

<style name="TextLabel" parent="TextAppearance.AppCompat">
        <item name="Android:textColorHint">@color/hint_color</item>
        <item name="Android:textSize">@dimen/text_20sp</item>
        <item name="colorControlNormal">@color/primaryGray</item>
        <item name="colorControlActivated">@color/colorPrimary</item>
    </style>

Nouveau style

<style name="TextLabel" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
        <item name="Android:textColorHint">@color/hint_color</item>
        <item name="Android:textSize">@dimen/text_20sp</item>
        <item name="colorControlNormal">@color/primaryGray</item>
        <item name="colorControlActivated">@color/colorPrimary</item>
    </style>
4
Mihir Palkhiwala

Merci pour vos réponses ... Le problème était que j'ai utilisé com.google.Android.material.textfield.TextInputLayout. Si vous utilisez ce contrôle, vous devriez ajouter dans vos dépendances: 

implementation 'com.google.Android.material:material:1.0.0-beta01' 

Dans mon cas, je réécris mon XML sur Android.support.design.widget.TextInputLayout

    <Android.support.design.widget.TextInputLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:textColorHint="@color/colorPrimary"
    app:errorEnabled="true">

    <Android.support.design.widget.TextInputEditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColor="@color/colorPrimary"
        Android:textColorHint="@color/colorPrimary"
        Android:hint="Username" />

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

De plus, j'ai ajouté dans mes dépendances: 

implementation 'com.Android.support:design:27.1.1' 

Cela a résolu mon problème.

3
grasdy

Dans vos dépendances, ajoutez:

implementation 'com.Android.support:design:27.0.0'

J'espère que ça vous aide .. essayez-le ..

0
Ümañg ßürmån

vous devriez changer 

Fichier build.gradle dans  

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'

    testImplementation 'junit:junit:4.12'

    implementation 'com.google.Android.material:material:1.0.0-beta01'
}

fichier xml dans  

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:context=".MainActivity"
    Android:focusable="false"
    Android:clickable="true">


   <LinearLayout
       Android:id="@+id/linear"
       Android:layout_width="match_parent"
       Android:layout_height="wrap_content"
       Android:layout_centerInParent="true"
       Android:orientation="vertical">

   <com.google.Android.material.textfield.TextInputLayout
       style="@style/TextInputLayout"
       Android:layout_width="match_parent"
       Android:layout_height="wrap_content"
       Android:hint="UserName"
       Android:layout_margin="15dp">

      <com.google.Android.material.textfield.TextInputEditText
          Android:layout_width="match_parent"
          Android:layout_height="wrap_content"
          Android:inputType="text"
          Android:maxLines="1" />
   </com.google.Android.material.textfield.TextInputLayout>

   <com.google.Android.material.textfield.TextInputLayout
       style="@style/TextInputLayout"
       Android:layout_width="match_parent"
       Android:layout_height="wrap_content"
       Android:hint="Email"
       Android:layout_margin="15dp">

      <com.google.Android.material.textfield.TextInputEditText
          Android:layout_width="match_parent"
          Android:layout_height="wrap_content"
          Android:inputType="textEmailAddress"
          Android:maxLines="1" />
   </com.google.Android.material.textfield.TextInputLayout>

      <com.google.Android.material.textfield.TextInputLayout
          style="@style/TextInputLayout"
          Android:layout_width="match_parent"
          Android:layout_height="wrap_content"
          Android:hint="Password"
          Android:layout_margin="15dp">

         <com.google.Android.material.textfield.TextInputEditText
             Android:layout_width="match_parent"
             Android:layout_height="wrap_content"
             Android:inputType="textPassword"
             Android:maxLines="1" />
      </com.google.Android.material.textfield.TextInputLayout>



   </LinearLayout>

</RelativeLayout>

MainActivity.Java

import Android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
0
deep gothi

vous devriez ajouter 

 implementation 'com.github.material-components:material-components-Android:1.0.0-rc01'

au niveau de votre application build.gradle dans la section des dépendances, il se présentera ainsi:

  dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.Android.support:appcompat-v7:28.0.0-rc01'
    implementation 'com.Android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.Android.support.test:runner:1.0.2'
    androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.github.material-components:material-components-Android:1.0.0-rc01'
    }  
0
Badran

Cette erreur est levée quand
"app:passwordToggleEnabled="true" or app:passwordToggleTint="#fff" est en com.google.Android.material.textfield.TextInputLayout.

En supprimant, cela fonctionne.

Il peut être défini par programme:

TextInputLayout input_password_layout=(TextInputLayout)findViewById(R.id.input_password_layout);
    input_password_layout.setPasswordVisibilityToggleEnabled(true);
    input_password_layout.setPasswordVisibilityToggleDrawable(R.drawable.back);
0
Beulah Ana

Après avoir suivi toutes les étapes énumérées ici , je rencontrais toujours le même problème de rendu, mais j’ai décidé de lancer l’application sur l’appareil pour voir ce qui se passait, 

Et même si l'aperçu dans Android Studio affichait le composant matériel sous la forme d'un EditText standard et affichait plusieurs avertissements, il était correctement restitué sur le périphérique. 

Donc, pour éviter aux gens de googler cette erreur pendant un certain temps (pour moi, c'était une heure perdue), essayez-le simplement sur l'appareil! 

0
Rainmaker