2014-06-27 13 views
10

Chciałem wypróbować nowe zabawki, które Google nam dał, a ja wpadłem w kłopoty.Błąd podczas dodawania CardView do layoutu

Oto moja 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:+' 
} 

Teraz mój układ:

<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> 

Kiedy przełączyć na ekran podglądu w android studio, otrzymuję błąd render:

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) 

Próbowałem ignorować błąd i uruchamiać aplikację w avd i podczas gdy wszystko kompiluje się dobrze, brak widoku karty wt on układ. Proszę pomóż!

P.s. Używam nowy Android Studio beta 0.8.0

+1

Mając dokładnie ten sam problem z dokładnie tej samej konfiguracji. – tolgap

+0

Dodaj obszar nazw card_view do swojego RelativeLayout 'xmlns: card_view =" http://schemas.android.com/apk/res-auto "' – Dallas187

+1

SEE -> http://stackoverflow.com/a/27111942/1815624 – CrandellWS

Odpowiedz

2

Jest to błąd w Android Studio, zobacz https://code.google.com/p/android/issues/detail?id=79071

Jednym z uwagami poprawki brzmi: „To było przyczyną widok karty renderingu na niepowodzenie Deklarowane style CardView w postaci CardView.Dark, z powodu której nie udało się wczytać wygenerowanej klasy R. "

Następna wersja powinna mieć to ustalone zgodnie z raportem błędu (łatka znajduje się na gałęzi studio-1.0-dev). Mówią, że budują projekt raz jako obejście, ale to nie naprawia go dla mnie (nawet jeśli mam dokładnie ten sam błąd i ślad stosu).

30

udało mi się zmusić go do pracy na emulatorze zmieniając mój build.gradle do tego:

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

Upewnij się, że repozytorium support zainstalowane z Menedżera SDK! Mam nadzieję, że to pomaga:

EDYCJA: jak ktoś zasugerował użycie "com.android.support:cardview-v7:23.1" jest lepszą praktyką, ale nie jest wymagana.

+0

praca dla mnie dziękuję – Milad

+0

to działa również dla mnie! –

+0

To zdecydowanie powinna być odpowiedź. – JustAGuy

3

udało mi się uzyskać to do pracy poprzez dodanie następujących do mojego build.gradle: kompilacji „com.android.support:cardview-v7:21.+”

nadzieję, że to pomaga.

9

try dodanie tego wiersza do RelativeLayout

xmlns:card_view="http://schemas.android.com/apk/res-auto" 
+0

To jest jedyna odpowiedź, która zadziałała! Edytor XML potrzebował tylko powiązanej przestrzeni nazw. – noob

0

warto dodać to do pliku build.gradle

dependencies { 
... 
compile 'com.android.support:cardview-v7:21.0.+' 
compile 'com.android.support:recyclerview-v7:21.0.+' 
... 
} 
4

To mi rozwiązać dodając 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> 
Powiązane problemy