错误膨胀类和android.support.v7.widget.CardView

我想在我的项目中使用CardView,但是当我运行我的应用程序时,出现以下错误。 我正在使用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.' 

请帮忙。

这是我使用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> 

这是我的活动的布局。

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

这是我的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 

有人遇到同样的问题或解决它,请评论。

我想我可以回答我自己的问题。

转到文件 – >导入 – >现有的Android代码到工作区 – >浏览(转到SDK /附加/安卓/支持/ V7 / CardView) – >点击确定 – >点击完成

您的项目浏览器现在将cardview显示为一个项目。

右键点击cardview项目 – >属性 – > Android(左窗格) – >启用isLibrary(勾选checkbox) – >应用 – >确定

现在右键点击你的项目 – >属性 – > Android(左窗格) – >添加(在库下) – > cardview – >应用 – >确定

现在再次右键单击你的项目 – >构buildpath – >configuration构buildpath – >在项目选项卡下,添加cardview

你完成了。

我想你的问题不在你的XML布局,而是你的build.gradle设置。

当您想在较低的API设备中使用Recyclerview或CardView的支持库时,您不仅需要导入v7库,还需要独立导入Recycler View和Card View支持。

喜欢这个:

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

这是由谷歌的文件在这里注意到: https : //developer.android.com/training/material/compatibility.html

请参阅依赖关系部分。

另外,你可以下载谷歌的RecyclerView的样本来挖掘。

希望这会有所帮助!

在我的情况下,我必须做的东西添加android.support.v7.widget.CardView作为库项目,并添加+检查它的jar文件在java build path

  1. 转到文件 – >导入 – >现有的Android代码到工作区 – >浏览(转到SDK /附加/安卓/支持/ V7 / CardView) – >点击确定 – >点击完成

  2. 右键点击cardview项目 – >属性 – > Android(左窗格) – >启用isLibrary(勾选checkbox) – >应用 – >确定

  3. 右键单击你的项目 – >属性 – > Android(左窗格) – >添加(在库下) – > cardview – >应用 – >确定

  4. 再次右键单击你的项目 – >构buildpath – >configuration构buildpath – >在库下 – >添加jar – >展开cardview – >展开库 – >selectandroid.support.v7.widget.CardView.jar

  5. 在命令和导出 – >检查android.support.v7.widget.CardView.jar – >点击确定

我在这里浪费了几个小时,对于我来说,最后一块难题是“cardview”项目,已经作为一个Android项目导入到Eclipse中,然后右键单击>属性> android>并将其从Android 2.1更改为棒棒糖!

如果您使用intellij使用这些步骤,这实际上工作

  • 点击你的项目,
  • 右键 – >打开模块设置(f4)
  • 从\ sdk \ extras \ android \ support \ v7 \
  • 将.jar文件添加到cardview模块
  • 点击你的项目,并给cardview模块依赖
  • 现在,点击cardview – > android – >顶部的(+)button,你会看到一个checkbox(库模块),启用它。
  • 点击确定并closures你的设置对话框。
  • 重build你的项目并运行它。

我通过添加依赖关系得到了错误

RecyclerView和CardView小部件是v7支持库的一部分。 要在您的项目中使用这些小部件,请将这些Gradle依赖项添加到您的应用程序的模块中:

依赖关系{… compile'c​​om.android.support:cardview-v7:21.0.+'compile'c​​om.android.support:recyclerview-v7:21.0.+'}

http://developer.android.com/training/material/lists-cards.html

这些步骤对我有用:)

转到文件 – >导入 – >现有的Android代码到工作区 – >浏览(转到SDK /附加/安卓/支持/ V7 / CardView) – >点击确定 – >点击完成

您的项目浏览器现在将cardview显示为一个项目。

右键点击cardview项目 – >属性 – > Android(左窗格) – >启用isLibrary(勾选checkbox) – >应用 – >确定

现在右键点击你的项目 – >属性 – > Android(左窗格) – >添加(在库下) – > cardview – >应用 – >确定

现在再次右键单击你的项目 – >构buildpath – >configuration构buildpath – >在项目选项卡下,添加cardview

你应该要求多一个步骤来清除错误,那就是cardview lib的顺序。

所以再右键点击你的项目 – >属性 – > Android(左窗格) – >在库窗口中selectcardview库 – >然后向上移动

@sunil

如前所述:

  1. 转到文件 – >导入 – >现有的Android代码到工作区 – >浏览(转到SDK /附加/安卓/支持/ V7 / CardView) – >点击确定 – >点击完成

  2. 右键点击cardview项目 – >属性 – > Android(左窗格) – >启用isLibrary(勾选checkbox) – >应用 – >确定

  3. 右键单击你的项目 – >属性 – > Android(左窗格) – >添加(在库下) – > cardview – >应用 – >确定

如果这不起作用,继续从你现在导入的代码的库项目的文件夹android-support-v7-cardview/libs添加和删​​除相同包的个别jar。 卸下jar子,清洁项目并再次尝试。 删除项目的一个小家伙build议添加,删除任何外部卡尔相关卡尔德(我认为这些导致冲突)。 清理项目,希望这对你有用。

注意:我个人确实必须将cardview库的目标构build级别从4.0.3更改为5.0,然后返回到4.1.2 ,每次清理项目,以使其工作。

解决这个问题。 首先你必须添加cardview

  1. closures主项目。
  2. 删除android-support-v7-appcompat。
  3. 重新启动Eclipse。
  4. 添加android-support-v7-appcompat。
  5. 清洁,build立项目。
  6. 然后打开主项目并构build所有项目。
  7. 错误仍然存​​在。 重新开启eclipse。 而已。

这对我行得通。

导入CardView库作为Eclipse项目而不是Android项目

我通过重新启动日食解决了我的问题。 还要确保你已经添加了构buildpath中的jar子并将其标记为导入/导出。

这个解决scheme对我有用。

1-进入“sdk \ extras \ android \ m2repository \ com \ android \ support \ recyclerview-v7 * 22.1.1 *”(现在是22.1.1最新版本)

2-打开与Winrar的recyclerview-v7-22.1.1.aar文件。

3-有一个名为classes.jar的jar文件。 将其复制到您的项目库文件夹。

4-右键单击classes.jar,添加构buildpath。

而已。

相关的注意事项:如果你正在使用支持库,你很确定你的依赖关系是正确的,你通过search“错误膨胀类CardView”,然后确保你的XML布局使用<android.support .v7.widget.CardView>而不只是<CardView>!

这两个错误是非常相似的,我花了几分钟facepalm,当我意识到我没有注意到错误消息中的完整的类名,我在我的布局中使用不支持<CardView>没有意识到它。

如果您正在使用VISUAL STUDIO并且出现此错误,请尝试重新启动VS,然后重新构build解决scheme。 这对我有效。 希望这可以节省一些时间。