【问题标题】:Error inflating class and android.support.v7.widget.CardView膨胀类和 android.support.v7.widget.CardView 时出错
【发布时间】:2014-10-21 19:05:39
【问题描述】:

我想在我的项目中使用 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>

这是我的日志

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

有遇到同样问题或解决过的,请留言。

【问题讨论】:

  • @GabrieleMariotti 我已经发布了我的布局。请检查
  • 也发布 logcat。
  • @MysticMagic 我已经发布了 logcat。这很乱。但请检查并提供帮助。
  • @HarshPokharna 您是否已将库 android.support.v7 添加到您的项目中?
  • @PiyushKukadiya 是的,我已经添加了它。为什么会出现这个错误?

标签: android eclipse android-5.0-lollipop android-recyclerview android-cardview


【解决方案1】:

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

转到文件 -> 导入 -> 现有 Android 代码到工作区 --> 浏览(转到 sdk/extras/android/support/v7/cardview) --> 点击确定 --> 点击完成

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

在cardview项目上右击-->属性-->安卓(左窗格)-->启用isLibrary(勾选复选框)-->应用-->确定

现在右键单击您的项目 --> 属性 --> Android(左窗格) --> 添加 (在库下) --> cardview --> 应用 --> ok

现在再次右键单击您的项目 --> 构建路径 --> 配置构建路径 --> 在项目选项卡下,添加 cardview

你已经完成了。

【讨论】:

  • 我也有同样的问题。但是...当我将 CardView 作为库项目导入时,它没有任何 java 源文件,并且“src”目录为空。我检查了 sdk 额外文件夹中的 src 文件夹,它是空的!
  • @HamidrezaHosseinkhani 我遇到了同样的问题。只需忽略空的 src 文件夹,因为所需的文件 android-support-v7-cardview.jar 位于 Android Private Libraries 文件夹中。 RecyclerView 也是如此。回答正确。
  • 我尝试将 CardView 和 RecyclerView 库导入为 Eclipse 项目,而不是 Android 项目并完成 :)
  • 只是为了补充这个答案,我一步一步按照这些说明进行操作,但我仍然有这个错误。为了解决这个错误,我进入了新的cardview项目并打开了它的AndroidManifest.xml。在那里,我去了uses-sdk 部分并确保它的minSdkVersionmaxSdkVersion 匹配my 应用程序minSdkVersionmaxSdkVersion。在我执行了这些步骤之后,这解决了错误。
  • @ScottScooterWeidenkopf 非常感谢老兄。在这个愚蠢的错误中挣扎了将近 6 个小时。
【解决方案2】:

我猜你的问题不在于你的 xml 布局,而是你的 build.gradle 设置。

当你想在API较低的设备上使用Recyclerview或CardView的支持库时,不仅需要导入v7库,还需要单独导入RecyclerView和CardView的支持。

像这样:

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

Google 的文档在此处注明了这一点:https://developer.android.com/training/material/compatibility.html

参见依赖部分。

另外,你可以下载google的RecyclerView示例进行挖掘。

希望这会有所帮助!

【讨论】:

  • 谢谢,拯救了我的一天!
  • 太棒了。当您在 XML 中的 CardView 中有项目时,也可以消除“此处不允许元素”错误。
【解决方案3】:

就我而言,我必须将android.support.v7.widget.CardView 添加为库项目并在java build path 中添加+检查它的jar 文件

  1. 转到文件 -> 导入 -> 现有的 Android 代码到工作区--> 浏览(转到 sdk/extras/android/support/v7/cardview)--> 点击确定 --> 点击完成

  2. 右键cardview项目-->属性-->Android(左窗格)-->启用isLibrary(勾选复选框)-->应用-->确定

  3. 右击你的项目 --> 属性 --> Android(左窗格) --> 添加(在库下) --> cardview --> 应用 --> ok

  4. 再次右击你的项目-->构建路径-->配置构建路径-->在库下-->添加jar-->扩展卡视图-->扩展库-->选择android.support.v7.widget.CardView.jar

  5. 在order和export下-->勾选android.support.v7.widget.CardView.jar-->点击ok

【讨论】:

  • 仍然有异常...请帮助@piyush
  • 转到项目->清理->选择项目-->确定
  • 这是最好的..!经过大量搜索和敲打我的头后,我找到了你..!印度人在 Java 方面非常敏锐,这完全是我个人的看法。!
【解决方案4】:

我在这上面浪费了几个小时,对我来说,最后一块拼图是转到已作为 Android 项目导入 Eclipse 的“cardview”项目,然后右键单击 > 属性 > android > 并将其从 Android 2.1 更改给棒棒糖!

【讨论】:

  • 为我工作,谢谢。我认为它的工作原理是我的项目针对 21 岁,但无论如何感谢您的提示:)
【解决方案5】:

如果您使用的是 intellij,请使用这些步骤,这确实有效

  • 点击您的项目,
  • 右击->打开模块设置(f4)
  • 从\sdk\extras\android\support\v7\导入cardview
  • 将 .jar 文件添加到 cardview 模块中
  • 单击您的项目并将模块依赖项赋予cardview
  • 现在,点击 cardview 上的 (+) 按钮 -> android -> 在顶部您会看到一个复选框(库模块),启用它。
  • 点击确定并关闭您的设置对话框。
  • 重建您的项目并运行它。

【讨论】:

  • 你有 +1 ,但有时我想知道为什么谷歌认为这么复杂。
  • 检查它是否是一个库项目是这里的关键。
【解决方案6】:

我通过添加依赖项解决了错误

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

依赖{ ... 编译'com.android.support:cardview-v7:21.0.+' 编译'com.android.support:recyclerview-v7:21.0.+' }

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

【讨论】:

    【解决方案7】:

    这些步骤对我有用:)

    转到文件 -> 导入 -> 现有 Android 代码到工作区 --> 浏览(转到 sdk/extras/android/support/v7/cardview) --> 点击确定 --> 点击完成

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

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

    现在右键单击您的项目 --> 属性 --> Android(左窗格) --> 添加 (在库下) --> cardview --> 应用 --> ok

    现在再次右键单击您的项目 --> 构建路径 --> 配置构建路径 --> 在项目选项卡下,添加卡片视图

    您还需要一个步骤来消除错误,即 cardview lib 的顺序。

    所以再次右键单击您的项目 --> 属性 --> Android(左窗格)--> 在库窗口中选择 cardview lib --> 并向上移动

    【讨论】:

      【解决方案8】:

      @sunil

      如前所述:

      1. 转到文件 -> 导入 -> 现有的 Android 代码到工作区 --> 浏览(转到 sdk/extras/android/support/v7/cardview) --> 点击确定 --> 点击完成

      2. 在cardview项目上右击-->属性-->安卓(左窗格)-->启用isLibrary(勾选复选框)-->应用-->确定

      3. 右击你的项目 --> 属性 --> Android(左窗格) --> 添加(在库下) --> cardview --> 应用 --> ok

      如果这不起作用,请继续从您现在导入的代码库项目的文件夹android-support-v7-cardview/libs 中添加和删除同一包的单个 jar。删除 Jar,清理项目并重试。删除一个家伙建议添加的项目,删除任何与 cardview 相关的外部 Jar(我认为这些会导致冲突)。 清理项目,希望对您有用。

      注意:我个人确实必须将 cardview 库的目标构建级别从 4.0.3 更改为 5.0,然后再改回 4.1.2,每次清理项目,让它也能正常工作。

      【讨论】:

        【解决方案9】:

        解决这个问题。 首先你必须从

        添加卡片视图
        1. 关闭主项目。
        2. 删除 android-support-v7-appcompat 。
        3. 重新启动 Eclipse。
        4. 添加 android-support-v7-appcompat 。
        5. 清理,构建项目。
        6. 然后打开主项目并构建所有项目。
        7. 错误仍然存​​在。重启日食。就是这样。

        这对我有用。

        【讨论】:

          【解决方案10】:

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

          【讨论】:

            【解决方案11】:

            我通过重新启动 Eclipse 解决了我的问题。还要确保您已在构建路径中添加了 jars 并将其标记为导入/导出。

            【讨论】:

              【解决方案12】:

              这个解决方案对我有用。

              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,添加到构建路径。

              就是这样。

              【讨论】:

                【解决方案13】:

                相关说明:如果您使用的是支持库,那么您很确定您的依赖项是正确的,并且您通过搜索“Error inflating class CardView”来到这里,然后确保您的 XML 布局使用 而不仅仅是

                这两个错误非常相似,当我意识到我没有注意错误消息中的完整类名并且我在我的不知不觉布局。

                【讨论】:

                  【解决方案14】:

                  使用 true --> false 禁用 gradle.properties 文件中的 androidx

                  android.useAndroidX=false

                  android.enableJetifier=false

                  然后将这些行更改为 build.gradle(Module:app) 中的 api v28

                  compileSdkVersion 28

                  targetSdkVersion 28

                  然后将这些行添加到 build.gradle(Module:app)

                  `implementation 'com.android.support:appcompat-v7:28.0.0'`
                  `implementation 'com.android.support:recyclerview-v7:28.0.0'`
                  `implementation 'com.android.support:cardview-v7:28.0.0'`
                  `implementation 'com.android.support:design:28.0.0'`
                  

                  然后sync项目

                  【讨论】:

                    猜你喜欢
                    • 2015-01-06
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-09-05
                    相关资源
                    最近更新 更多