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
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).
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.
essayez d’ajouter cette ligne à votre RelativeLayout
xmlns:card_view="http://schemas.Android.com/apk/res-auto"
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>
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.
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.+'
...
}