web-dev-qa-db-fra.com

Erreur lors de l'ajout de CardView à la mise en page

Je voulais essayer les nouveaux jouets que Google nous a donnés et j'ai eu quelques problèmes.

Voici mon build.gradle:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 'Android-L'
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.tod.Android.lpreviewtest"
        minSdkVersion 'L'
        targetSdkVersion 'L'
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

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

Maintenant ma mise en page:

<RelativeLayout 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"
    Android:paddingLeft="@dimen/activity_horizontal_margin"
    Android:paddingRight="@dimen/activity_horizontal_margin"
    Android:paddingTop="@dimen/activity_vertical_margin"
    Android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MyActivity">
    <Android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.Android.com/apk/res-auto"
        Android:id="@+id/card_view"
        Android:layout_gravity="center"
        Android:layout_width="200dp"
        Android:layout_height="200dp"
        card_view:cardCornerRadius="4dp">

        <TextView
            Android:id="@+id/info_text"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent" />
    </Android.support.v7.widget.CardView>
</RelativeLayout>

Lorsque je passe à l'aperçu d'écran dans Android Studio, un message d'erreur s'affiche:

Rendering Problems The following classes could not be instantiated:
- Android.support.v7.widget.CardView (Open Class, Show Exception)

Exception Details Java.lang.ClassFormatError: Illegal field name "CardView.Dark"         
in class Android/support/v7/cardview/R$style  at
Java.lang.ClassLoader.defineClass1(ClassLoader.Java:-2)   at
Java.lang.ClassLoader.defineClass(ClassLoader.Java:792)   at 
Java.lang.ClassLoader.defineClass(ClassLoader.Java:635)   at 
Java.lang.ClassLoader.loadClass(ClassLoader.Java:424)   at 
Java.lang.ClassLoader.loadClass(ClassLoader.Java:411)   at 
Java.lang.ClassLoader.loadClass(ClassLoader.Java:357)   at 
Android.support.v7.widget.CardView.initialize(CardView.Java:69)   at 
Android.support.v7.widget.CardView.<init>(CardView.Java:60)   at 
Java.lang.reflect.Constructor.newInstance(Constructor.Java:526)   at 
Android.view.LayoutInflater.rInflate_Original(LayoutInflater.Java:802)   at 
Android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.Java:64)   at 
Android.view.LayoutInflater.rInflate(LayoutInflater.Java:778)   at 
Android.view.LayoutInflater.inflate(LayoutInflater.Java:500)   at 
Android.view.LayoutInflater.inflate(LayoutInflater.Java:381)

J'ai essayé d'ignorer l'erreur et d'exécuter l'application dans un fichier AVD. Bien que tout se compile bien, aucune vue carte n'apparaît dans la présentation. S'il vous plaît aider!

P.s. J'utilise la nouvelle version 1.2.0 d'Android Studio

13
trickedoutdavid

Ceci est un bogue dans Android Studio, voir https://code.google.com/p/Android/issues/detail?id=79071

L'un des commentaires du correctif est le suivant: "Cela entraînait l'échec du rendu de la vue carte. CardView a déclaré les styles de la forme CardView.Dark en raison desquels la classe R générée n'a pas été chargée."

Ceci devrait être corrigé dans la prochaine version en fonction du rapport de bogue (le correctif est sur branch studio-1.0-dev). Ils disent de construire le projet une fois comme solution de contournement, mais cela ne le résout pas pour moi (même si j'ai exactement la même erreur et le même suivi de pile).

2
personne3000

J'ai pu le faire fonctionner sur l'émulateur en modifiant mon build.gradle en ceci:

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

Assurez-vous que le référentiel de support est installé à partir du SDK Manager! J'espère que cela vous aidera

EDIT: comme quelqu'un l'a suggéré, l'utilisation de 'com.Android.support:cardview-v7:23.1' est une meilleure pratique, mais elle n'est pas obligatoire.

30
CrazyIvan3700

essayez d’ajouter cette ligne à votre RelativeLayout 

xmlns:card_view="http://schemas.Android.com/apk/res-auto"
14
bubunyo

Cela m'a résolu en ajoutant xmlns:card_view="http://schemas.Android.com/apk/res-auto"

        <LinearLayout
            Android:orientation="vertical"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            xmlns:card_view="http://schemas.Android.com/apk/res-auto"> --->> ******
        ....
        ...
        <Android.support.v7.widget.CardView>
    ..
...
.....

        </Android.support.v7.widget.CardView>
        </LinearLayout>
5
Sathish Kumar

J'ai pu obtenir cela en ajoutant ce qui suit à mon build.gradle: Compile 'com.Android.support:cardview-v7:21.+'

J'espère que cela t'aides.

3
user3845801

Essayez d'ajouter ceci à votre fichier build.gradle

dependencies {
...
compile 'com.Android.support:cardview-v7:21.0.+'
compile 'com.Android.support:recyclerview-v7:21.0.+'
...
}
0
Williams Tobi