trickedoutdavid
trickedoutdavid

Reputation: 868

Error when adding CardView to layout

I wanted to try out the new toys that google gave us and I've run into some trouble.

Here is my 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:+'
}

Now my layout:

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

When I switch to screen preview in android studio, I get a render error:

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)

I tried ignoring the error and running the app in an avd and while everything compiles fine, no cardview appears in the layout. Please help!

P.s. I'm using the new Android Studio beta 0.8.0

Upvotes: 16

Views: 35228

Answers (8)

GAREGIN VARDANYAN
GAREGIN VARDANYAN

Reputation: 1

Just add this

xmlns:app="http://schemas.android.com/apk/res-auto"

and it will download namespace

Upvotes: 0

Kunal kumawat
Kunal kumawat

Reputation: 1

Go to app, right click on: Open module -> Settings -> Dependencies.

Go to "Declared dependencies" and you will find the "+" sign under the title.

Click on "Library dependencies".

Search for "Material" and go to "version section".

Apply 1.0.0 and click "ok".

And then search for card view you will get it on and the class

Upvotes: 0

Sathish Kumar
Sathish Kumar

Reputation: 957

It solved me by adding 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>

Upvotes: 6

user3499194
user3499194

Reputation:

I was able to get it to work on the emulator by changing my build.gradle to this:

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

Make sure you have the support repository installed from the SDK Manager! Hope this helps

EDIT: as someone suggested using 'com.android.support:cardview-v7:23.1' is a better practice but it not required.

Upvotes: 31

Williams Tobi
Williams Tobi

Reputation: 77

Try adding this to your build.gradle file

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

Upvotes: 0

personne3000
personne3000

Reputation: 1850

This is a bug in Android Studio, see https://code.google.com/p/android/issues/detail?id=79071

One of the comments of the patch reads: "This was causing card view rendering to fail. CardView declared styles of the form CardView.Dark due to which the generated R class failed to load."

Next version should have this fixed according to the bug report (the patch is on branch studio-1.0-dev). They say to build the project once as a workaround, but this does not fix it for me (even though I have exactly the same error and stack trace).

Upvotes: 2

Bubunyo Nyavor
Bubunyo Nyavor

Reputation: 2570

try adding this line to your RelativeLayout

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

Upvotes: 17

user3845801
user3845801

Reputation: 31

I was able to get this to work by adding the following to my build.gradle: compile 'com.android.support:cardview-v7:21.+'

Hope this helps.

Upvotes: 3

Related Questions