web-dev-qa-db-fra.com

Erreur lors du gonflage de la classe Android.support.v7.widget.Toolbar?

J'essaie d'obtenir Material Design pour mon application en suivant cette méthode .

Chaque fois que je lance l'application, l'erreur suivante s'affiche: 

Erreur lors du gonflage de la classe Android.support.v7.widget.Toolbar. 

J'ai vérifié si j'ai bien ajouté l'appcompat. Mais tout est correct pour moi. Alors s'il vous plaît dites-moi ce que je fais mal? 

build.gradle

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 21
    buildToolsVersion '21.0.2'

    defaultConfig {
        applicationId "io.bxbxbai.feedlistviewdemo"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles 'proguard-rules.pro'
        }
    }
}

configurations {
    all*.exclude group: 'com.Android.support', module: 'support-v4'
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':materialDesign')
    compile 'com.balysv.materialmenu:material-menu:1.4.0'
    compile 'com.Android.support:appcompat-v7:21.+'
}

Logcat

02:11.641  20583-20583/io.bxbxbai.feedlistviewdemo E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: io.bxbxbai.feedlistviewdemo, PID: 20583
    Java.lang.RuntimeException: Unable to start activity ComponentInfo{io.bxbxbai.feedlistviewdemo/io.bxbxbai.androiddemos.MainActivity}: Android.view.InflateException: Binary XML file line #3: Error inflating class Android.support.v7.widget.Toolbar
            at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2224)
            at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2283)
            at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1205)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:136)
            at Android.app.ActivityThread.main(ActivityThread.Java:5158)
            at Java.lang.reflect.Method.invokeNative(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:515)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:796)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: Android.view.InflateException: Binary XML file line #3: Error inflating class Android.support.v7.widget.Toolbar
            at Android.view.LayoutInflater.createView(LayoutInflater.Java:620)
            at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:696)
            at Android.view.LayoutInflater.parseInclude(LayoutInflater.Java:816)
            at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:745)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:492)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:397)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:353)
            at Android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.Java:228)
            at Android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.Java:102)
            at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.Java:31)
            at Android.app.Activity.performCreate(Activity.Java:6144)
            at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1087)
            at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2181)
            at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2283)
            at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1205)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:136)
            at Android.app.ActivityThread.main(ActivityThread.Java:5158)
            at Java.lang.reflect.Method.invokeNative(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:515)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:796)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: Java.lang.reflect.InvocationTargetException
            at Java.lang.reflect.Constructor.constructNative(Native Method)
            at Java.lang.reflect.Constructor.newInstance(Constructor.Java:423)
            at Android.view.LayoutInflater.createView(LayoutInflater.Java:594)
            at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:696)
            at Android.view.LayoutInflater.parseInclude(LayoutInflater.Java:816)
            at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:745)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:492)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:397)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:353)
            at Android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.Java:228)
            at Android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.Java:102)
            at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.Java:31)
            at Android.app.Activity.performCreate(Activity.Java:6144)
            at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1087)
            at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2181)
            at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2283)
            at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1205)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:136)
            at Android.app.ActivityThread.main(ActivityThread.Java:5158)
            at Java.lang.reflect.Method.invokeNative(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:515)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:796)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: Java.lang.NoSuchMethodError: Android.support.v4.content.ContextCompat.getDrawable
            at Android.support.v7.internal.widget.TintManager.getDrawable(TintManager.Java:133)
            at Android.support.v7.internal.widget.TintTypedArray.getDrawable(TintTypedArray.Java:62)
            at Android.support.v7.widget.Toolbar.<init>(Toolbar.Java:248)
            at Android.support.v7.widget.Toolbar.<init>(Toolbar.Java:190)
            at Java.lang.reflect.Constructor.constructNative(Native Method)
            at Java.lang.reflect.Constructor.newInstance(Constructor.Java:423)
            at Android.view.LayoutInflater.createView(LayoutInflater.Java:594)
            at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:696)
            at Android.view.LayoutInflater.parseInclude(LayoutInflater.Java:816)
            at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:745)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:492)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:397)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:353)
            at Android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.Java:228)
            at Android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.Java:102)
            at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.Java:31)
            at Android.app.Activity.performCreate(Activity.Java:6144)
            at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1087)
            at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2181)
            at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2283)
            at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1205)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:136)
            at Android.app.ActivityThread.main(ActivityThread.Java:5158)
            at Java.lang.reflect.Method.invokeNative(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:515)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:796)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:612)
            at dalvik.system.NativeStart.main(Native Method)

MODIFIER

toolbar.xml

<?xml version="1.0" encoding="utf-8"?>

<Android.support.v7.widget.Toolbar
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="?attr/colorPrimaryDark"/>

activity_main.xml

 <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        xmlns:tools="http://schemas.Android.com/tools"
        Android:id="@+id/container"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical"
        tools:context=".MainActivity"
        tools:ignore="MergeRootFrame">

        <include Android:id="@+id/toolbar" layout="@layout/toolbar" />

        <Button
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:id="@+id/btn_feed_list_demo"
            Android:text="@string/feed_list_demo"/>

    </RelativeLayout>
56
AruLNadhaN

Désolé les gars. J'ai résolu ce problème il y a longtemps. J'ai fait beaucoup de changements. Donc, je ne peux pas savoir lequel fait le tour.

  1. J'ai changé l'identifiant comme suggéré par Jared Burrows.

  2. Retiré ma bibliothèque de support et nettoyé mon projet et Re l'a ajouté.

  3. Allez dans Fichier -> Invalider les caches/redémarrer.

Esperons que ça marche.

Voici à quoi ressemble mon code

activity.xml

<?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"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <include
        Android:id="@+id/toolbar_actionbar"
        layout="@layout/toolbar_default"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"/>

    <Android.support.v4.widget.DrawerLayout
        Android:id="@+id/drawer"
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_below="@+id/toolbar_actionbar">

        <FrameLayout
            Android:id="@+id/container"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"/>

        <fragment
            Android:id="@+id/fragment_drawer"
            Android:name="com.arul.anahy.drawer.NavigationDrawerFragment"
            Android:layout_width="@dimen/navigation_drawer_width"
            Android:layout_height="match_parent"
            Android:layout_gravity="start"
            app:layout="@layout/fragment_navigation_drawer"/>
    </Android.support.v4.widget.DrawerLayout>
</RelativeLayout>

toolbar_default.xml

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar
    style="@style/ToolBarStyle"
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="?attr/colorPrimary"
    Android:minHeight="@dimen/abc_action_bar_default_height_material"/>

ToolBarStyle

<style name="ToolBarStyle" parent="">
        <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
        <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
 </style>
35
AruLNadhaN

J'ai pu résoudre ce problème en remplaçant le texte suivant:

Dans la présentation de la barre d’outils, remplacez tout ce qui ressemble à ceci:

Android:minHeight="?attr/actionBarSize"
Android:background="?attr/colorPrimary"

avec

Android:minHeight="@dimen/abc_action_bar_default_height_material"
Android:background="@color/myColor"
20
mike.b93

J'ai résolu ce problème par ce blog: http://Android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

Le problème est que vous utilisez le mauvais thème, vous pouvez choisir un thème qui, comme Theme.AppCompat.NoActionBar, fonctionne dans mon projet.

J'espère vous aider

6
Guu

J'ai eu le même problème car j'utilisais la version 23.2.0 de AppCompat Library. J'ai mis à jour la bibliothèque de support à 23.2.1 et le problème a été résolu.

Ce problème de la barre d’outils a été résolu en 23.2.1 

6
iAviatorJose

Veuillez lire cet article du blog Google: http://Android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

<Android.support.v7.widget.Toolbar
    Android:id="@+id/my_awesome_toolbar"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    Android:minHeight="?attr/actionBarSize"
    Android:background="?attr/colorPrimary" />

En outre, vous lui donnez le même "ID" deux fois, veuillez supprimer l'ID "de votre include:

<include Android:id="@+id/toolbar" layout="@layout/toolbar" />
5
Jared Burrows

Si vous utilisez les nouvelles implémentations androidx , lors de la saisie de Toolbar, Studio le complétera automatiquement en Android.support.v7.widget.Toolbar, mais vous devrez plutôt utiliser androidx.appcompat.widget.Toolbar, sinon vous obtiendrez cette erreur.

4
Gudin

J'ai résolu ce problème en modifiant le fichier build.gradle de l'application. 

Pour Gradle Plugin 2.0+ 

 Android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  

Pour Gradle Plugin 1.5 

 Android {  
   defaultConfig {  

     generatedDensities = []  
  }  

  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 } 
3
Pacific P. Regmi

Je suis confronté au même problème, mais c'était après avoir mis à jour appcompatv23.2.0. J'ai essayé toutes les suggestions ci-dessus, mais ça marche. Ensuite, j'ai procédé à mon fichier Gradle et remplacé:

dependencies {
compile 'com.Android.support:appcompat-v7:23.2.0’
compile 'com.Android.support:design:23.2.0'

}

avec:

dependencies {
compile 'com.Android.support:appcompat-v7:23.0.1'
compile 'com.Android.support:design:23.0.1'
}

Reconstruisez le projet et le problème avait disparu. Cela pourrait être un problème avec app compact v23.2.0, nous espérons une meilleure solution pour que nous puissions travailler avec la nouvelle mise à jour.

J'espère que ça aide ... Merci.

3
nmvictor

Cela m'est arrivé lorsque j'ai essayé d'utiliser mon ancien code dans le nouvel Android avec des implémentations Android. changez votre définition XML en;

<androidx.appcompat.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="@color/colorPrimary"
            Android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            app:titleTextColor="@Android:color/white" />

puis dans votre code Java;

import androidx.appcompat.widget.Toolbar;
3
Lubowa Enock

Je sais que c'est une vieille question, mais j'ai récemment rencontré le même problème. Cela a fini par être un problème de Proguard (lorsque j'ai défini minifyEnabled sur false, cela a cessé de se produire.)

Pour l'arrêter, avec proguard activé, j'ai ajouté ce qui suit à mon fichier de règles proguard, grâce à une solution trouvée ailleurs (après avoir découvert que le problème était proguard)

-dontwarn Android.support.v7.**
-keep class Android.support.v7.** { *; }
-keep interface Android.support.v7.** { *; }

Je ne sais pas s'ils sont nécessaires, mais j'ai aussi ajouté ces lignes:

-keep class com.google.** { *; }
-keep interface com.google.** { *; }
2
Randy

Cela a fonctionné pour moi: Ajouter compilez 'com.Android.support:appcompat-v7:21.0.3' dans le dégradé. Modifiez la cible sdk en 21. J'espère que cela fonctionne pour vous!

1
Claudio

J'ai rencontré le même problème. Solution qui a fonctionné pour moi. Si vous utilisez v7.Toolbar, vous devez utiliser le thème étendu à partir de Theme.AppCompat. * Vous ne pouvez pas utiliser le thème étendu à partir d'Android: Theme.Material. * Car ils ont des attributs de style différents.

J'espère que ça vous sera utile.

1
Vlad Hudnitsky

Pour moi, cela a fonctionné après moi:

  • Solution de nettoyage. 
  • Suppression de l'application du téléphone où je l'ai déboguée. 
  • Fermeture de Visual Studio.
  • Suppression des dossiers/bin/et/obj/dans les projets Android.
  • Lancer la solution à nouveau.
1
nvbnvb

Pour résoudre ce problème, vous devez d'abord ajouter latestandroid-support-v7-appcompat à partir du répertoire\sdk\extras\Android\support.

  1. Fermez le projet principal.
  2. Supprimez Android-support-v7-appcompat.
  3. Redémarrez l'Eclipse.
  4. Ajoutez le Android-support-v7-appcompat.
  5. Nettoyer, pour construire le projet.
  6. Ensuite, ouvrez le projet principal et construisez tous les projets.
  7. L'erreur reste toujours. Redémarrez Eclipse. C'est tout.

Cela fonctionne pour moi et je vous recommande fortement d'utiliser Android Studio.

1
Hemant Shori

Dans mon cas, je recevais cette erreur dans une exception d'inflation sur Imageview, dans les versions inférieures et Lollipop OS.

J'ai résolu cette exception lors du déplacement de tous les fichiers image du dossier drawable v-24 vers le dossier drawable.

1
Mayuresh Deshmukh

Aucune des solutions ci-dessus n'a fonctionné pour moi.

Je n'avais pas de barre d'outils dans mon projet, mais j'ai eu la même erreur.

J'ai nettoyé le projet, désinstallé l'application . Ensuite, j'ai exécuté une gradlew build --refresh-dependencies et découvert qu'il y avait des événements onclick sans code correspondant dans les fichiers xml. 

Je les ai supprimés, j'ai reconstruit le projet et cela a fonctionné.

Les dépendances ne semblaient pas avoir été mises à jour, mais c'est une autre histoire.

1
live-love

La raison pour laquelle cette erreur s’est produite avec moi n’est pas claire, mais j’ai résolu le problème. J'ai utilisé la même disposition, en ligne ou en utilisant include, les deux provoquant une erreur NPE. Donc, je pense que ce n'est pas un problème de mise en page.

J'ai eu un appel de classe abstrait BaseActivity étend ActionBarActivity qui ont la méthode initActionBar (). Je substitue et appelle cette méthode dans OnCreate de la classe enfant. Quelque chose comme ca:

Android.support.v7.app.ActionBar mActionBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book_appointment);

    // Inject View using ButterKnife
    ButterKnife.inject(this);

    // Init toolbar & status bar
    initActionBar();
}

@Override
protected void initActionBar() {
    super.initActionBar();

    setSupportActionBar(mToolBar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    mActionBar = getSupportActionBar();
    mActionBar.setDisplayHomeAsUpEnabled(true);
    mActionBar.setHomeButtonEnabled(true);
}

J'avais une erreur NPE avec le code ci-dessus. Je ne sais pas pourquoi je me trompe. Je résous par code ci-dessous et c'est pareil.

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book_appointment);
    ButterKnife.inject(this);

    setSupportActionBar(mToolBar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    mActionBar = getSupportActionBar();
    mActionBar.setDisplayHomeAsUpEnabled(true);
    mActionBar.setHomeButtonEnabled(true);

    initActionBar();
}

@Override
protected void initActionBar() {
    super.initActionBar();
}
0
khaintt

La solution au problème pour moi a été trouvée dans le document XML de mon activité principale. À l'origine, ma barre d'outils était <Android.support.v7.widget.Toolbar. Pour résoudre ce problème, je l'ai changé en <Android.widget.Toolbar. Je ne sais pas pourquoi cela a bien fonctionné. Est-ce que quelqu'un a une idée de pourquoi?

0
androidtitan

Dans le cas de Xamarin dans VS, vous devez ajouter

Theme = "@style/MyThemesss"

à votre activité.cs.

J'ajoute ceci et continue.

0
sa1

J'ai eu des problèmes comprenant la barre d'outils dans un RelativeLayout, essayez avec LinearLayout. Si vous voulez superposer la barre d’outils, essayez avec:

 <RelativeLayout>

    <LinearLayout>
      --INCLUDE tOOLBAR--
    </LinearLayout>

    <Button></Button>

 </RelativeLayout>

Je ne comprends pas pourquoi mais ça marche pour moi. 

0
Juanjo

Pour moi, l'erreur était que j'avais:

    <Android:support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"/>

au lieu de:

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"/>

Plus précisément, j'avais deux points entre "Android" et "support" sur la première ligne au lieu d'un point.

0
Ellen Spertus

J'ai enlevé ces lignes comme ci-dessous:

avant :

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar1"
    Android:layout_width="match_parent"
    Android:layout_height="@attr/actionBarSize"
    Android:minHeight="@attr/actionBarSize"
    Android:layout_alignParentTop="true" >

après :

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar1"
    Android:layout_width="match_parent"
    Android:layout_height="50dp"
    Android:layout_alignParentTop="true" >

Au lieu de "@ attr/actionBarSize", mettez des valeurs spécifiques, cela fonctionne pour moi.

0
Prashant

Le problème concernait les appareils pré-lolipop. J'ai pu résoudre ce problème en remplaçant le texte suivant:

Dans la présentation de la barre d’outils, remplacez tout ce qui ressemble à ceci:

Android:layout_height="?android:attr/actionBarSize"
Android:background="?android:attr/colorPrimary"

avec

Android:layout_height="?attr/actionBarSize"
Android:background="@color/colorPrimary"
0
Rumit Patel

Dans mon cas, l'appel de inflater.inflate (R.layout.some_layout, null) posait problème. Le paramètre Null as ViewGroup était le problème.

0
Oknesif