Error inflating class and android.support.v7.widget.CardView

56,486

Solution 1

I guess I can answer my own question.

Go to File -> Import -> Existing Android code into workspace --> Browse (Go to sdk/extras/android/support/v7/cardview) --> Click ok --> Click Finish

Your project explorer will now show cardview as a project.

Right click on cardview project --> Properties --> Android(Left Pane) --> Enable isLibrary (tick the checkbox) --> Apply --> ok

Now Right click on your project --> Properties --> Android(Left pane) --> Add (under library) --> cardview --> apply --> ok

Now right click on your project again --> build path --> configure build path --> Under projects tab, add cardview

You are done.

Solution 2

I guess your problem is not within your xml layout, but your build.gradle settings.

When you want to use support library for Recyclerview or CardView in lower API devices, you not only needs to import the v7 library, but also needs to import Recycler View and Card View support independently.

Like this:

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

This is noted by Google's documents here: https://developer.android.com/training/material/compatibility.html

See dependencies section.

Also, you can download google's sample of RecyclerView to digging out.

Hope this will help!

Solution 3

In my case i have to do both the things add android.support.v7.widget.CardView as a library project and also add + check it's jar file in java build path

  1. Go to File -> Import -> Existing Android code into workspace --> Browse (Go to sdk/extras/android/support/v7/cardview) --> Click ok --> Click Finish

  2. Right click on cardview project --> Properties --> Android(Left Pane) --> Enable isLibrary (tick the checkbox) --> Apply --> ok

  3. Right click on your project --> Properties --> Android(Left pane) --> Add (under library) --> cardview --> apply --> ok

  4. right click on your project again --> build path --> configure build path -->under libraries-->add jar-->expand cardview-->expand libs-->select android.support.v7.widget.CardView.jar

  5. under order and export-->check android.support.v7.widget.CardView.jar-->click ok

Solution 4

if you are using intellij use these steps, this actually works

  • click in your project,
  • right click -> open Module Settings (f4)
  • import cardview from \sdk\extras\android\support\v7\
  • add .jar file to cardview module
  • click on your project and give module dependency to cardview
  • now, click (+) button on cardview -> android -> at top you will see a check box (library module), enable it.
  • click ok and close your settings dialog.
  • rebuild your project and run it.

Solution 5

I wasted hours on this, for me the final piece of the puzzle was going to the "cardview" project that had been imported into Eclipse as an Android project, then right clicking > properties > android > and changing it from Android 2.1 to Lollipop!

Share:
56,486

Related videos on Youtube

Harsh Pokharna
Author by

Harsh Pokharna

Updated on September 12, 2020

Comments

  • Harsh Pokharna
    Harsh Pokharna over 3 years

    I want to use CardView in my project, but when I run my application, I get the following error. I'm using 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.'
    

    Please help.

    This is the layout for my fragment where I have used 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>
    

    This is the layout for my activity.

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

    This is my 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
    

    Someone who has encountered the same problem or solved it, please comment.

    • Harsh Pokharna
      Harsh Pokharna over 9 years
      @GabrieleMariotti I have posted my layouts. Please check
    • MysticMagicϡ
      MysticMagicϡ over 9 years
      And post logcat too.
    • Harsh Pokharna
      Harsh Pokharna over 9 years
      @MysticMagic I have posted the logcat. It's very messy. But please check and help.
    • Piyush Kukadiya
      Piyush Kukadiya over 9 years
      @HarshPokharna Have you added library android.support.v7 to your project ?
    • Harsh Pokharna
      Harsh Pokharna over 9 years
      @PiyushKukadiya Yes I have addded it. Why does this error occur ?
    • ligi
      ligi over 9 years
      how did you add it? looks like you did not add it as a library project
    • Harsh Pokharna
      Harsh Pokharna over 9 years
      @ligi I am new to android development. Can you please elaborate and guide me through the process of adding it as a library project
    • ligi
      ligi over 9 years
      @HarshPokharna not for eclipse - I use AS and gradle - there it is as easy as adding one line to a build.gradle file
    • Harsh Pokharna
      Harsh Pokharna over 9 years
      @ligi can you tag someone who might know and can help me ?
    • ligi
      ligi over 9 years
      @HarshPokharna better switch to AS
    • Shridutt Kothari
      Shridutt Kothari almost 8 years
      Thanks for asking this question, and thanks everyone who answered this question
    • Jeel Shah
      Jeel Shah over 7 years
      To users who already have the gradle dependencies and have RecyclerView working but not CardView (and if you are using Android Studio), run gradle sync and then refresh the layout. That did it for me.
  • sunil
    sunil over 9 years
    still exception is there...please help @piyush
  • TouchBoarder
    TouchBoarder over 9 years
    Go to Project -> Clean -> Select the projects --> ok
  • Hamidreza Hosseinkhani
    Hamidreza Hosseinkhani over 9 years
    I have the same problem. but... when I import CardView as a library project, It has not any java source file and the 'src' directory is empty. I examine the src folder in the sdk extra folder and it is empty!
  • Advait Saravade
    Advait Saravade over 9 years
    @HamidrezaHosseinkhani I had the same issue. Just ignore the empty src folder because the required file android-support-v7-cardview.jar is in the Android Private Libraries folder. Same goes for the RecyclerView. Answer works correctly.
  • Hamidreza Hosseinkhani
    Hamidreza Hosseinkhani about 9 years
    I try to import CardView and RecyclerView library as the Eclipse Project instead of Android Project and IT DONE :)
  • scottysseus
    scottysseus about 9 years
    Just to add on to this answer, I followed these instructions step by step, but I still had this error. To solve this error, I went into the new cardview project and opened its AndroidManifest.xml. There, I went to the uses-sdk section and made sure that its minSdkVersion and maxSdkVersion matched my apps minSdkVersion and maxSdkVersion. That solved the error, after I followed these steps.
  • Stoycho Andreev
    Stoycho Andreev about 9 years
    you have +1 , but sometime I am wondering why google think so complicated.
  • Lukas Knuth
    Lukas Knuth about 9 years
    Checking that it's a library project was the key here.
  • mfaisalhyder
    mfaisalhyder almost 9 years
    This is the best one..! after alot of searching and pounding my head i found u..! Indians are really sharp in Java, totally my personal opinion.!
  • Bishoy Fakhry
    Bishoy Fakhry almost 9 years
    Worked for me,Thanks. I think it works as my project was targeting 21,but anyway thanks for the hint :)
  • Anirudh
    Anirudh over 8 years
    @ScottScooterWeidenkopf Thanks a lot dude. Was struggling with this stupid bug for almost 6 hours.
  • Sruit A.Suk
    Sruit A.Suk about 8 years
    @ScottScooterWeidenkopf you might need to post it as new answer, your solution, point the correct one
  • Bruce
    Bruce about 8 years
    Thanks, saved my day!
  • Azurespot
    Azurespot almost 8 years
    Awesome. Also gets rid of the "Element not allowed here" error when you have items in your CardView in the XML.