Error inflating class and android.support.v7.widget.CardView
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
Go to File -> Import -> Existing Android code into workspace --> Browse (Go to sdk/extras/android/support/v7/cardview) --> Click ok --> Click Finish
Right click on cardview project --> Properties --> Android(Left Pane) --> Enable isLibrary (tick the checkbox) --> Apply --> ok
Right click on your project --> Properties --> Android(Left pane) --> Add (under library) --> cardview --> apply --> ok
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
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!
Related videos on Youtube
Harsh Pokharna
Updated on September 12, 2020Comments
-
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 over 9 years@GabrieleMariotti I have posted my layouts. Please check
-
MysticMagicϡ over 9 yearsAnd post logcat too.
-
Harsh Pokharna over 9 years@MysticMagic I have posted the logcat. It's very messy. But please check and help.
-
Piyush Kukadiya over 9 years@HarshPokharna Have you added library
android.support.v7
to your project ? -
Harsh Pokharna over 9 years@PiyushKukadiya Yes I have addded it. Why does this error occur ?
-
ligi over 9 yearshow did you add it? looks like you did not add it as a library project
-
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 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 over 9 years@ligi can you tag someone who might know and can help me ?
-
ligi over 9 years@HarshPokharna better switch to AS
-
Shridutt Kothari almost 8 yearsThanks for asking this question, and thanks everyone who answered this question
-
Jeel Shah over 7 yearsTo users who already have the gradle dependencies and have
RecyclerView
working but notCardView
(and if you are using Android Studio), rungradle sync
and then refresh the layout. That did it for me.
-
-
sunil over 9 yearsstill exception is there...please help @piyush
-
TouchBoarder over 9 yearsGo to Project -> Clean -> Select the projects --> ok
-
Hamidreza Hosseinkhani over 9 yearsI 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 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 about 9 yearsI try to import CardView and RecyclerView library as the Eclipse Project instead of Android Project and IT DONE :)
-
scottysseus about 9 yearsJust 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 theuses-sdk
section and made sure that itsminSdkVersion
andmaxSdkVersion
matched my appsminSdkVersion
andmaxSdkVersion
. That solved the error, after I followed these steps. -
Stoycho Andreev about 9 yearsyou have +1 , but sometime I am wondering why google think so complicated.
-
Lukas Knuth about 9 yearsChecking that it's a library project was the key here.
-
mfaisalhyder almost 9 yearsThis 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 almost 9 yearsWorked for me,Thanks. I think it works as my project was targeting 21,but anyway thanks for the hint :)
-
Anirudh over 8 years@ScottScooterWeidenkopf Thanks a lot dude. Was struggling with this stupid bug for almost 6 hours.
-
Sruit A.Suk about 8 years@ScottScooterWeidenkopf you might need to post it as new answer, your solution, point the correct one
-
Bruce about 8 yearsThanks, saved my day!
-
Azurespot almost 8 yearsAwesome. Also gets rid of the "Element not allowed here" error when you have items in your
CardView
in the XML.