如何解决:膨胀类 android.support.v7.widget.CardView 时出错

Posted

技术标签:

【中文标题】如何解决:膨胀类 android.support.v7.widget.CardView 时出错【英文标题】:How to Resolve : Error inflating class android.support.v7.widget.CardView 【发布时间】:2018-09-05 19:47:22 【问题描述】:

我对这个错误感到非常沮丧。我完成了我的项目并在我的 android 版本 4.4.2 的设备上运行,它成功运行,然后我成功上传到 Playstore 并再次从 Playstore 安装,它仍然运行良好.....

但是后来我收到了很多朋友的崩溃报告。然后我借了我朋友的Android 6.0.1版本的设备,从Android Studio运行应用程序,在Splashactivity启动后应用程序突然崩溃。 Splashactivity 成功启动,然后在打开 Mainactivity 之前,我使用片段容器加载 5-6 个片段......它崩溃了。

以下是我的错误日志报告

Caused by: android.view.InflateException: Binary XML file line #69: Binary XML file line #69: Error inflating class android.support.v7.widget.CardView
        at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
        at com.nepalpolice.cdp.main.onCreateView(main.java:69)

这是布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".main">



    <LinearLayout
        android:orientation="vertical"
        android:background="@drawable/bg"
        android:layout_
        android:layout_>




        <RelativeLayout
            android:layout_
            android:layout_
            android:layout_alignParentTop="true">

            <ImageView
                android:id="@+id/imageView1"
                android:layout_
                android:layout_
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:adjustViewBounds="true"
                android:src="@drawable/main"
                />

        </RelativeLayout>
        <View
            android:layout_
            android:layout_
            android:background="#f7f6f3"/>

        <View
            android:id="@+id/SplitLine_hor1"
            android:layout_
            android:layout_height= "2dp"
            android:background="#C0C0C0" />


        <android.support.v7.widget.GridLayout
            android:id="@+id/mainGrid"
            app:orientation="horizontal"
            app:columnCount="2"
            android:background="#FEFEFE"
            app:rowCount="3"
            app:columnOrderPreserved="false"
            android:layout_
            android:layout_
            android:padding="1dp"
            >

            <!-- Row 1 -->

            <!-- Column 1 -->
            <android.support.v7.widget.CardView
                android:layout_
                android:layout_
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:layout_marginBottom="0dp"
                android:layout_marginLeft="0dp"
                android:layout_marginRight="0dp"
                app:cardElevation="8dp"
                app:cardCornerRadius="8dp"
                android:backgroundTint="@drawable/megaphone"
                >

                <LinearLayout
                    android:layout_gravity="center_horizontal|center_vertical"
                    android:layout_margin="16dp"
                    android:orientation="vertical"
                    android:layout_
                    android:layout_>

                    <ImageView
                        android:src="@drawable/notices"
                        android:layout_gravity="center_horizontal"
                        android:layout_
                        android:layout_
                        android:id='@+id/news'/>

                    <TextView
                       android:text="News "
                        android:textAlignment="center"
                        android:textColor="#0f539c"
                        android:textSize="18sp"
                        android:textStyle="bold"
                        android:layout_
                        android:layout_ />

                </LinearLayout>

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

            <android.support.v7.widget.CardView
                android:layout_
                android:layout_
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:layout_marginBottom="0dp"
                android:layout_marginLeft="0dp"
                android:layout_marginRight="0dp"
                app:cardElevation="8dp"
                app:cardCornerRadius="8dp"
                >

                <LinearLayout
                    android:layout_gravity="center_horizontal|center_vertical"
                    android:layout_margin="16dp"
                    android:orientation="vertical"
                    android:layout_
                    android:layout_>

                    <ImageView
                        android:id='@+id/feeds'
                        android:src="@drawable/feeds"
                        android:layout_gravity="center_horizontal"
                        android:layout_
                        android:layout_ />

                    <TextView
                        android:text="Blog"
                        android:textAlignment="center"
                        android:textColor="#0f539c"
                        android:textSize="18sp"
                        android:textStyle="bold"
                        android:layout_
                        android:layout_ />

                </LinearLayout>

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


  </LinearLayout>




</ScrollView>


</RelativeLayout>

我的构建 gradle 文件是

apply plugin: 'com.android.application'

android 
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig 
        applicationId "com.nepalpolice.cdp"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 5
        versionName "5.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    
    dexOptions 
        jumboMode true
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    






dependencies 
    implementation 'com.google.firebase:firebase-auth:11.8.0'
    implementation 'com.google.firebase:firebase-storage:11.8.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
        exclude group: 'com.android.support', module: 'support-annotations'
    )
    implementation("com.github.bumptech.glide:glide:4.6.1") 
        exclude group: "com.android.support"
        implementation 'com.android.support:appcompat-v7:26.+'
        implementation 'com.android.support:support-v4:26.+'
        implementation 'com.android.support:cardview-v7:26.+'
        implementation 'com.android.support:recyclerview-v7:26.+'
        implementation 'com.google.firebase:firebase-messaging:11.8.0'
        implementation 'com.google.gms:google-services:3.1.0'
        implementation 'com.android.support:design:26.+'
        implementation 'de.hdodenhof:circleimageview:2.2.0'

        implementation 'com.theartofdev.edmodo:android-image-cropper:2.5.1'
        implementation 'com.android.support:gridlayout-v7:26.+'
        implementation 'com.github.clans:fab:1.6.2'
        testCompile 'junit:junit:4.12'
        implementation 'com.google.android.gms:play-services-maps:11.8.0'
        implementation 'com.google.firebase:firebase-firestore:11.8.0'
        implementation 'id.zelory:compressor:2.1.0'
        implementation files('libs/libGoogleAnalyticsServices.jar')


    
    apply plugin: 'com.google.gms.google-services'

图像文件是

我的主要片段是

  public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
    View view = inflater.inflate(R.layout.fragment_main, container, false);
    news   = (ImageView) view.findViewById(R.id.news);
    notice   = (ImageView) view.findViewById(R.id.notice);

我该如何解决这个问题.....我也关注了许多其他帖子,但它也没有帮助。 在此先感谢

【问题讨论】:

能否请您添加错误 @MohamdAl-Najjar 我在文本和图像文件中都添加了错误...请检查。 测试用例:尝试使用精确版本而不是加号。像 26.0.1 或任何你有的 然后清理重建并运行 尝试使用确切的版本,并将所有implementation 移到滑行之外,并在依赖项关闭花括号后移动这一行 apply plugin: 'com.google.gms.google-services' ,然后尝试重建应用程序 【参考方案1】:

使用

app:backgroundTint="@drawable/megaphone"

不是这个

 android:backgroundTint="@drawable/megaphone"

试试这个

<android.support.v7.widget.CardView
                android:layout_
                android:layout_
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:layout_marginBottom="0dp"
                android:layout_marginLeft="0dp"
                android:layout_marginRight="0dp"
                app:cardElevation="8dp"
                app:cardCornerRadius="8dp"
                app:backgroundTint="@drawable/megaphone"
                >

【讨论】:

当我按照建议对构建 gradle 文件进行更改并删除 android:BackgroundTint:"drawable/microphon.jpg" 时,它终于解决了问题,但现在我遇到了另一个问题,在我的 4.1 版本的 android 中主要片段看起来像这样ibb.co/nQNo27,但在Android 6.1 版中,卡片视图没有显示,而是像这样ibb.co/ce9e9n。这个怎么解决??? @RishiramRanabhat 检查这个***.com/questions/26728570/… @RishiramRanabhat 检查这个***.com/questions/27599603/…【参考方案2】:

您已经在 glide 中实现了所有依赖项。试试下面的gradle

分级:

dependencies 
    implementation 'com.google.firebase:firebase-auth:11.8.0'
    implementation 'com.google.firebase:firebase-storage:11.8.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
        exclude group: 'com.android.support', module: 'support-annotations'
    )
    implementation("com.github.bumptech.glide:glide:4.6.1") 
        exclude group: "com.android.support" 
     
        implementation 'com.android.support:appcompat-v7:26.+'
        implementation 'com.android.support:support-v4:26.+'
        implementation 'com.android.support:cardview-v7:26.+'
        implementation 'com.android.support:recyclerview-v7:26.+'
        implementation 'com.google.firebase:firebase-messaging:11.8.0'
        implementation 'com.google.gms:google-services:3.1.0'
        implementation 'com.android.support:design:26.+'
        implementation 'de.hdodenhof:circleimageview:2.2.0'

        implementation 'com.theartofdev.edmodo:android-image-cropper:2.5.1'
        implementation 'com.android.support:gridlayout-v7:26.+'
        implementation 'com.github.clans:fab:1.6.2'
        testCompile 'junit:junit:4.12'
        implementation 'com.google.android.gms:play-services-maps:11.8.0'
        implementation 'com.google.firebase:firebase-firestore:11.8.0'
        implementation 'id.zelory:compressor:2.1.0'
        implementation files('libs/libGoogleAnalyticsServices.jar')

    apply plugin: 'com.google.gms.google-services'

【讨论】:

并将这个 26.+ 更改为 26.0.1 当我按照建议对构建 gradle 文件进行更改并删除 android:BackgroundTint:"drawable/microphon.jpg" 时,它终于解决了问题,但现在我遇到了另一个问题,在我的 4.1 版本的 android 中主要片段看起来像这样ibb.co/nQNo27,但在Android 6.1 版中,卡片视图没有显示,而是像这样ibb.co/ce9e9n。这个怎么解决??? 在清单中尝试 【参考方案3】:

查看您的xml 代码后,我发现您忘记声明id newsnotice 导致此android.view.InflateException

解决方案:将这些字段声明为所需的ImageView's

【讨论】:

Chirag...对不起,*** cloudn 不允许我发布更多 3000 行代码,所以我只是部分我的 xml 和其余部分是相同的...我已经声明bot 新闻和通知..我仔细检查了我的 xml....但感谢您的友好建议。【参考方案4】:

尝试使用app:cardBackgroundColor 而不是,我认为tint 不适用于CardView

对于测试问题,尝试用任何颜色替换@drawable/megaphone,可能是megaphone内部的问题

【讨论】:

以上是关于如何解决:膨胀类 android.support.v7.widget.CardView 时出错的主要内容,如果未能解决你的问题,请参考以下文章

Android错误膨胀类android.support.constraint.ConstraintLayout

膨胀类 android.support.v7.app.MediaRouteButton 时出错

膨胀类 android.support.v7.widget.RecyclerView(Eclipse) 时出错

膨胀类 android.support.v7.widget.CardView 时出错

无法解决 NavigationView 膨胀类的错误

膨胀类 android.support.v7.widget.RecyclerView 时出错