web-dev-qa-db-fra.com

Erreur de gonflage de la classe et Android.support.v7.widget.CardView

Je souhaite utiliser CardView dans mon projet, mais lorsque j'exécute mon application, l'erreur suivante apparaît. J'utilise Eclipse

Error: Error inflating class and Android.support.v7.widget.CardView

The graphical view of my xml file says 'The following classes could not be instantiated:
- Android.support.v7.widget.CardView (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.'

S'il vous plaît aider.

Ceci est la mise en page de mon fragment où j'ai utilisé CardView

<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context="com.example.log.MyContactsFragment" >

<!-- TODO: Update blank fragment layout -->

<Android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/cvContactDetails"
    Android:layout_width="match_parent"
    Android:layout_height="200dp"
    Android:layout_gravity="center"
    Android:background="?android:attr/selectableItemBackground"
    Android:clickable="false"
    Android:elevation="20dp" >

    <TextView
        Android:id="@+id/tvContacts"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Contact Info" />

    <Button
        Android:id="@+id/bDelete"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Delete" />

    <Button
        Android:id="@+id/bExport"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Export to phone contacts" />
</Android.support.v7.widget.CardView>

Ceci est la mise en page de mon activité.

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/drawerLayout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

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

    <ListView
        Android:id="@+id/lvLeftDrawer"
        Android:layout_width="200dp"
        Android:layout_height="match_parent"
        Android:layout_gravity="left"
        Android:alpha="255"
        Android:background="#0B2161"
        Android:divider="@null"
        Android:choiceMode="singleChoice" >
    </ListView>

    <ListView
        Android:id="@+id/lvRightDrawer"
        Android:layout_width="200dp"
        Android:layout_height="match_parent"
        Android:layout_gravity="right"
        Android:alpha="255"
        Android:background="#0B2161"
        Android:divider="@null"
        Android:choiceMode="singleChoice" >
    </ListView>

</Android.support.v4.widget.DrawerLayout>

C'est mon logcat

FATAL EXCEPTION: main
Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.log/com.example.log.HomeScreenActivity}: Android.view.InflateException: Binary XML file line #9: Error inflating class Android.support.v7.widget.CardView
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2059)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2084)
at Android.app.ActivityThread.access$600(ActivityThread.Java:130)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1195)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:137)
at Android.app.ActivityThread.main(ActivityThread.Java:4745)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:786)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: Android.view.InflateException: Binary XML file line #9: Error inflating class Android.support.v7.widget.CardView
at Android.view.LayoutInflater.createView(LayoutInflater.Java:613)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:687)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:746)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:489)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:396)
at com.example.log.MyContactsFragment.onCreateView(MyContactsFragment.Java:60)
at Android.support.v4.app.Fragment.performCreateView(Fragment.Java:1504)
at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:942)
at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:1121)
at Android.support.v4.app.BackStackRecord.run(BackStackRecord.Java:682)
at Android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.Java:1484)
at Android.support.v4.app.FragmentActivity.onStart(FragmentActivity.Java:571)
at Android.app.Instrumentation.callActivityOnStart(Instrumentation.Java:1163)
at Android.app.Activity.performStart(Activity.Java:5018)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2032)
... 11 more
Caused by: Java.lang.reflect.InvocationTargetException
at Java.lang.reflect.Constructor.constructNative(Native Method)
at Java.lang.reflect.Constructor.newInstance(Constructor.Java:417)
at Android.view.LayoutInflater.createView(LayoutInflater.Java:587)
25 more
Caused by: Java.lang.NoClassDefFoundError: Android.support.v7.cardview.R$styleable
at Android.support.v7.widget.CardView.initialize(CardView.Java:203)
at Android.support.v7.widget.CardView.<init>(CardView.Java:101)
... 28 more

Quelqu'un qui a rencontré le même problème ou l'a résolu, merci de le commenter.

25
Harsh Pokharna

Je suppose que je peux répondre à ma propre question. 

Allez dans Fichier -> Importer -> Code Android existant dans l'espace de travail -> Parcourir (Allez à sdk/extras/Android/support/v7/cardview) -> Cliquez sur ok -> Cliquez sur Terminer

Votre explorateur de projet affichera maintenant cardview en tant que projet.

Faites un clic droit sur le projet cardview -> Propriétés -> Android (volet gauche) -> Activer isLibrary (cochez la case) -> Appliquer -> ok

Maintenant, faites un clic droit sur votre projet -> Propriétés -> Android (volet gauche) -> Ajouter (sous la bibliothèque) -> cardview -> appliquer -> ok

Maintenant, cliquez à nouveau avec le bouton droit de la souris sur votre projet -> chemin de construction -> configurer le chemin de construction -> sous l'onglet projets, ajoutez cardview 

Vous avez terminé.

56
Harsh Pokharna

Je suppose que votre problème ne réside pas dans votre mise en page XML, mais dans vos paramètres build.gradle.

Lorsque vous souhaitez utiliser la bibliothèque de support pour Recyclerview ou CardView dans des périphériques API inférieurs, vous devez non seulement importer la bibliothèque v7, mais également importer indépendamment le support de Recycler View et Card View.

Comme ça:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:appcompat-v7:21.0.+'
    compile 'com.Android.support:cardview-v7:21.0.+'
    compile 'com.Android.support:recyclerview-v7:21.0.+'
    compile 'com.Android.support:support-v4:21.0.0'
} 

Ceci est noté par les documents Google ici: https://developer.Android.com/training/material/compatibility.html

Voir la section des dépendances.

En outre, vous pouvez télécharger l'exemple de RecyclerView de Google pour le creuser.

J'espère que cela aidera!

39
Arthur Wang

Dans mon cas, je dois faire les choses, ajouter Android.support.v7.widget.CardView en tant que projet de bibliothèque et aussi ajouter + vérifier son fichier jar dans Java build path 

  1. Allez dans Fichier -> Importer -> Code Android existant dans l'espace de travail -> Parcourir (Allez à sdk/extras/Android/support/v7/cardview) -> Cliquez sur ok -> Cliquez sur Terminer

  2. Faites un clic droit sur le projet cardview -> Propriétés -> Android (volet gauche) -> Activer isLibrary (cochez la case) -> Appliquer -> ok 

  3. Faites un clic droit sur votre projet -> Propriétés -> Android (volet gauche) -> Ajouter (sous la bibliothèque) -> cardview -> appliquer -> ok 

  4. Faites un nouveau clic droit sur votre projet -> chemin de construction -> configurer le chemin de construction -> sous bibliothèques -> add jar -> expand cardview -> expand libs -> sélectionnez Android.support.v7.widget.CardView.jar 

  5. sous commande et export -> cochez Android.support.v7.widget.CardView.jar--> cliquez sur ok

12
Piyush Kukadiya

si vous utilisez intellij utilisez ces étapes, cela fonctionne réellement

  • cliquez dans votre projet,
  • clic droit -> ouvrir Paramètres du module (f4)
  • importer une vue de carte à partir de\sdk\extras\Android\support\v7 \
  • ajouter un fichier .jar au module cardview
  • cliquez sur votre projet et donnez la dépendance du module à cardview
  • maintenant, cliquez sur le bouton (+) sur cardview -> Android -> en haut vous verrez une case à cocher (module de bibliothèque), activez-la.
  • cliquez sur OK et fermez la boîte de dialogue de configuration.
  • reconstruisez votre projet et exécutez-le.
4
SureshCS50

J'ai perdu des heures sur ce sujet, pour moi la dernière pièce du puzzle allait au projet "cardview" qui avait été importé dans Eclipse en tant que projet Android, puis en faisant un clic droit> propriétés> Android> et en le changeant d'Android 2.1 à Lollipop!

4
Steven Elliott

J'ai obtenu une erreur en ajoutant des dépendances

Les widgets RecyclerView et CardView font partie des bibliothèques de support de la v7. Pour utiliser ces widgets dans votre projet, ajoutez ces dépendances Gradle au module de votre application:

dépendances { ... compiler 'com.Android.support:cardview-v7:21.0.+' compiler 'com.Android.support:recyclerview-v7:21.0.+'}

http://developer.Android.com/training/material/lists-cards.html

3
Tink

Ces étapes fonctionnent pour moi :)

Allez dans Fichier -> Importer -> Code Android existant dans l'espace de travail -> Parcourir (Allez à sdk/extras/Android/support/v7/cardview) -> Cliquez sur ok -> Cliquez sur Terminer

Votre explorateur de projet affichera maintenant cardview en tant que projet.

Faites un clic droit sur le projet cardview -> Propriétés -> Android (volet gauche) -> Activer isLibrary (cochez la case) -> Appliquer -> ok

Maintenant, faites un clic droit sur votre projet -> Propriétés -> Android (volet gauche) -> Ajouter (sous la bibliothèque) -> cardview -> appliquer -> ok

Maintenant, cliquez à nouveau avec le bouton droit de la souris sur votre projet -> chemin de construction -> configurer le chemin de construction -> sous l'onglet projets, ajoutez cardview

une étape supplémentaire est nécessaire pour supprimer l’erreur, c’est l’ordre de cardview lib.

alors faites un clic droit sur votre projet à nouveau -> propriétés -> Android (volet de gauche) -> sélectionnez cardview lib dans la fenêtre de la bibliothèque -> et déplacez-vous vers le haut

2
sverma

Pour résoudre ce problème, vous devez d'abord ajouter cardview à partir du 

  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.

Ça marche pour moi.

1
Hemant Shori

@sunil

Comme dit précédemment:

  1. Allez dans Fichier -> Importer -> Code Android existant dans l'espace de travail -> Parcourir (Allez à sdk/extras/Android/support/v7/cardview) -> Cliquez sur ok -> Cliquez sur Terminer

  2. Faites un clic droit sur le projet cardview -> Propriétés -> Android (volet gauche) -> Activer isLibrary (cochez la case) -> Appliquer -> ok

  3. Faites un clic droit sur votre projet -> Propriétés -> Android (volet gauche) -> Ajouter (sous la bibliothèque) -> cardview -> appliquer -> ok

Si cela ne fonctionne pas, ajoutez et supprimez les fichiers jar individuels du même package du dossier Android-support-v7-cardview/libs du projet de bibliothèque de votre code désormais importé. Retirez le pot, nettoyez le projet et essayez-le à nouveau. Supprimez le projet que l’un des types a suggéré d’ajouter, supprimez tous les fichiers Jar externes liés à cardview (je pense que cela provoque des conflits) . Nettoyez le projet et si tout va bien, cela fonctionne pour vous.

Remarque: J'ai personnellement dû modifier le niveau de construction cible de la bibliothèque cardview de 4.0.3 à 5.0 puis revenir à 4.1.2 , en nettoyant le projet à chaque fois, par exemple. ça marche aussi.

1
Mullazman

J'ai résolu mon problème en redémarrant l'Eclipse. Assurez-vous également que vous avez ajouté les fichiers jars dans le chemin de construction et les avoir marqués pour l'importation/exportation. 

0
Anmol Nimbalkar

Cette solution fonctionne sur moi.

1- Allez à "sdk\extras\Android\m2repository\com\Android\support\recyclerview-v7 * 22.1.1 *" (dernière version 22.1.1 pour l'instant.)

2- Ouvrez le fichier recyclerview-v7-22.1.1.aar avec Winrar.

3- Il existe un fichier jar nommé classes.jar. Copiez-le dans le dossier libs de votre projet.

4- Cliquez avec le bouton droit sur classes.jar, ajoutez-le au chemin de construction.

C'est tout.

0
Mete

Remarque connexe: si vous utilisez les bibliothèques de support, vous êtes presque sûr que vos dépendances sont correctes. Vous êtes arrivé ici en effectuant une recherche sur "Erreur lors de l'inflatable CardView", puis assurez-vous que votre présentation XML utilise <Android .support.v7.widget.CardView> et pas seulement <CardView>!

Les deux erreurs sont assez similaires et il m'a fallu quelques minutes à facepalm pour me rendre compte que je ne prêtais pas attention au nom complet de la classe dans le message d'erreur et que j'utilisais le <support> non supporté dans ma mise en page sans me rendre compte. il.

0
Nate Simpson

importer la bibliothèque CardView en tant que projet Eclipse au lieu du projet Android

0