异常:android.view.InflateException:二进制XML文件第2行:填充类android.support.v7.widget.CardView时出错。

9

我在我的Android应用程序中使用了支持库的CardView。我尝试了4-5个小时来解决这个问题,但是没有成功。

我已将CardView添加为我的项目库,并且也添加了v7 appcompat库。

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="5dp"
    android:orientation="horizontal"
    app:cardCornerRadius="4dp" >

但是我的应用程序出现了以下日志而崩溃

10-31 18:41:39.577: E/AndroidRuntime(5666): FATAL EXCEPTION: main
10-31 18:41:39.577: E/AndroidRuntime(5666): Process: com.xyzladdoo, PID: 5666
10-31 18:41:39.577: E/AndroidRuntime(5666): android.view.InflateException: Binary XML file line #2: Error inflating class android.support.v7.widget.CardView
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at com.xyzladdoo.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.java:85)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at com.xyzladdoo.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.java:1)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:2915)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:2511)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.LinearLayoutManager$RenderState.next(LinearLayoutManager.java:1425)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:999)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:524)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1461)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:1600)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:543)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1594)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:887)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:502)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.View.layout(View.java:14860)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewGroup.layout(ViewGroup.java:4643)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2013)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1770)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1019)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5725)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at android.view.Choreographer.doFrame(Choreographer.java:544)
10-31 18:41:39.577: E/AndroidRuntime(5666):     at an

需要帮忙吗?提前谢谢。


@FaroukTouzi 我正在使用 ADT。 - N Sharma
添加 xmlns:card_view="http://schemas.android.com/apk/res-auto" 行。 - Pragnesh Ghoda シ
我遇到了同样的问题。我尝试将android-support-v7-cardview.jar放在我的libs文件夹中,但不起作用。我尝试使用gradle依赖项,但也不起作用。你找到解决方案了吗?在API 21上一切正常,但在其他任何版本上都会出现inflateException。 - MattWilliams89
1
我解决了我的问题。我将一个drawable设置为android:foreground="@drawable/ripple.xml",它使用了API 21的ripple选择器。 - MattWilliams89
对我有用,谢谢@MattWilliams89 - Deep Dave
显示剩余6条评论
7个回答

7
让我们将cardview作为库导入:
转到文件 -> 导入 -> 将现有Android代码导入工作区 --> 浏览(转到sdk / extras / android / support / v7 / cardview) --> 单击确定 --> 单击完成

您的项目资源管理器现在将显示cardview作为一个项目。

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

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

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

完成。
来源


欢迎。我之前遇到了这个错误。我在Google上搜索并在StackOverFlow上找到了两个关于这个问题的问题,但其中一个有答案帮助我解决了这个问题。所以我将其复制/粘贴到这里 :) - Justin
实际上,我已经将v7 abcompat库添加到我的项目中,并认为这足以带来cardview。后来我意识到通过您的回答,cardView库是可单独获取的。非常感谢。 - Ashokchakravarthi Nagarajan
不要忘记将“libs”文件夹中的实际文件添加到构建路径中,然后检查它是否按顺序和导出。根据https://developer.android.com/tools/support-library/setup.html#libs-with-res,这是必须的。 - Advait Saravade
非常有用的评论,我花了半天时间处理这个错误(但是在Eclipse中使用RecyclerView),最终我找到了正确的答案!谢谢你,兄弟! - validcat

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

1

要解决这个问题,首先你必须从\sdk\extras\android\support添加cardview。

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

这对我很有用。


但是现在,我建议您使用Android Studio。 - Hemant Shori

1

@MohammedEAmer:谢谢你,你救了我的一天。 - Arsalan Mehmood

0

试试这个...

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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">


</android.support.v7.widget.CardView>

参考创建卡片


0

尝试在外部线性布局中使用类似这样的方式。

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    ... >
    <!-- A CardView that contains a TextView -->
    <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>
</LinearLayout>

0

我曾经和你一样遇到了同样的问题。

Eclipse中,当你从目录\sdk\extras\android\support\v7\cardview导入cardview时,请按照官方文档中“使用资源添加库 -> Eclipse”中所述的步骤进行操作: https://developer.android.com/intl/es/tools/support-library/setup.html#libs-with-res

在将cardview作为库添加到您的项目之前,请进入cardview项目的“属性 -> Android”并添加android-support-v7-appcompat库。不要忘记勾选“IsLibrary”。

现在,您可以将cardview作为库添加到您的项目中。清除两个项目以刷新更改。

希望这能帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接