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.
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é.
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!
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
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
Faites un clic droit sur le projet cardview -> Propriétés -> Android (volet gauche) -> Activer isLibrary (cochez la case) -> Appliquer -> ok
Faites un clic droit sur votre projet -> Propriétés -> Android (volet gauche) -> Ajouter (sous la bibliothèque) -> cardview -> appliquer -> ok
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
sous commande et export -> cochez Android.support.v7.widget.CardView.jar
--> cliquez sur ok
si vous utilisez intellij utilisez ces étapes, cela fonctionne réellement
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!
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
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
Pour résoudre ce problème, vous devez d'abord ajouter cardview à partir du
Ça marche pour moi.
@sunil
Comme dit précédemment:
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
Faites un clic droit sur le projet cardview -> Propriétés -> Android (volet gauche) -> Activer isLibrary (cochez la case) -> Appliquer -> ok
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.
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.
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.
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.
importer la bibliothèque CardView en tant que projet Eclipse au lieu du projet Android