谁能解释一下为啥这个 android 布局不工作并且在活动启动后立即使活动崩溃

Posted

技术标签:

【中文标题】谁能解释一下为啥这个 android 布局不工作并且在活动启动后立即使活动崩溃【英文标题】:Can anyone please explain why is this android layout not working and crashes the activity as soon as the activity is launched谁能解释一下为什么这个 android 布局不工作并且在活动启动后立即使活动崩溃 【发布时间】:2020-08-04 06:48:14 【问题描述】:

此代码不起作用,应用程序一直崩溃。每当我运行代码时,它都会显示错误。即使在任何人都可以帮助我消除此错误之后。 每当我在我的应用程序中使用 TextInputLayout 时,也会发生此错误。

分级:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android 
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig 
        applicationId "com.example.weatherapp"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

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



dependencies 
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core-ktx:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.code.gson:gson:2.8.6'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'com.squareup.retrofit2:retrofit:2.6.2'
    implementation 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

//    implementation 'com.google.android.gms.play-services-location:17.0.0'
    implementation 'com.google.android.libraries.places:places:2.2.0'
    implementation 'com.karumi:dexter:6.1.0'
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'


错误日志

**

E/AndroidRuntime: 致命异常: main 进程:com.example.weatherapp,PID:18681 java.lang.RuntimeException:无法启动活动 ComponentInfocom.example.weatherapp/com.example.weatherapp.MainActivity: android.view.InflateException:二进制 XML 文件第 21 行:二进制 XML 文件第 21 行:膨胀类 androidx.cardview.widget.CardView 时出错 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2895) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:6651) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824) 引起:android.view.InflateException:二进制 XML 文件第 21 行:二进制 XML 文件第 21 行:错误膨胀类 androidx.cardview.widget.CardView 原因:android.view.InflateException:二进制 XML 文件第 21 行:错误膨胀类 androidx.cardview.widget.CardView 引起:java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Constructor.newInstance0(本机方法) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:334) 在 android.view.LayoutInflater.createView(LayoutInflater.java:651) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:867) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:870) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:519) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:427) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 在 androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 在 com.example.weatherapp.MainActivity.onCreate(MainActivity.kt:48) 在 android.app.Activity.performCreate(Activity.java:7088) 在 android.app.Activity.performCreate(Activity.java:7079) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2895) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:6651) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824) 引起:android.content.res.Resources$NotFoundException: Drawable android:color/secondary_text_light_nodisable with resource ID

 Caused by: android.content.res.Resources$NotFoundException: File res/color/secondary_text_light_nodisable.xml from drawable resource ID

    at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:837)
    at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:638)
    at android.content.res.MiuiResourcesImpl.loadDrawable(MiuiResourcesImpl.java:316)
    at android.content.res.Resources.loadDrawable(Resources.java:900)
    at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:955)
    at android.content.res.TypedArray.getDrawable(TypedArray.java:930)

2020-04-21 19:19:16.157 18681-18681/com.example.weatherapp E/AndroidRuntime: 在 android.view.View.(View.java:4784) 在 android.view.ViewGroup.(ViewGroup.java:597) 在 android.widget.FrameLayout.(FrameLayout.java:92) 在 android.widget.FrameLayout.(FrameLayout.java:87) 在 androidx.cardview.widget.CardView.(CardView.java:121) 在 androidx.cardview.widget.CardView.(CardView.java:117) 在 java.lang.reflect.Constructor.newInstance0(本机方法) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:334) 在 android.view.LayoutInflater.createView(LayoutInflater.java:651) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:867) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:870) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:519) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:427) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 在 androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 在 com.example.weatherapp.MainActivity.onCreate(MainActivity.kt:48) 在 android.app.Activity.performCreate(Activity.java:7088) 在 android.app.Activity.performCreate(Activity.java:7079) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2895) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:6651) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824) 原因:org.xmlpull.v1.XmlPullParserException:二进制 XML 文件第 18 行:标签需要“可绘制”属性或子标签 定义可绘制对象 在 android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:189) 在 android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:122) 在 android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:142) 在 android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1295) 在 android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1254) 在 android.content.res.ResourcesImpl.createFromXmlForDensity(ResourcesImpl.java:1471) 在 android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:822) ... 39 更多 ** XML 代码

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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:background="#B0EEF6"
        android:layout_
        tools:context=".MainActivity"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        android:padding="20dp">



        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="horizontal"
            android:gravity="center">

            <androidx.cardview.widget.CardView
                app:cardElevation="5dp"
                app:cardCornerRadius="10dp"
                android:background="@android:color/secondary_text_light_nodisable"
                android:layout_
                android:layout_weight="1"
                android:layout_>

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:orientation="horizontal"
                    android:padding="20dp">

                    <ImageView
                        android:layout_
                        android:id="@+id/iv_main"
                        android:layout_
                        android:src="@drawable/snowflake"/>

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="end"
                        android:layout_weight="2"
                        android:orientation="vertical"
                        android:gravity="center_vertical">

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="Weather"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textSize="17sp"
                            android:textColor="@android:color/black"
                            android:id="@+id/tv_weather"/>

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="condition"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textColor="@color/quantum_grey600"
                            android:textSize="15sp"
                            android:id="@+id/tv_condition"/>


                    </LinearLayout>

                </LinearLayout>

            </androidx.cardview.widget.CardView>
            <androidx.cardview.widget.CardView
                app:cardElevation="5dp"
                android:layout_marginStart="10dp"
                app:cardCornerRadius="10dp"
                android:background="@android:color/secondary_text_light_nodisable"
                android:layout_
                android:layout_weight="1"
                android:layout_>

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:orientation="horizontal"
                    android:padding="20dp">

                    <ImageView
                        android:layout_
                        android:id="@+id/iv_humid"
                        android:layout_
                        android:src="@drawable/humidity"/>

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="end"
                        android:layout_weight="2"
                        android:orientation="vertical"
                        android:gravity="center_vertical">

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="Degree"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textSize="17sp"
                            android:textColor="@android:color/black"
                            android:id="@+id/tv_degree"/>

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="per cent"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textColor="@color/quantum_grey600"
                            android:textSize="15sp"
                            android:id="@+id/tv_percent"/>


                    </LinearLayout>

                </LinearLayout>

            </androidx.cardview.widget.CardView>

        </LinearLayout>
        <LinearLayout
            android:layout_marginTop="10dp"
            android:layout_
            android:layout_
            android:orientation="horizontal"
            android:gravity="center">

            <androidx.cardview.widget.CardView
                app:cardElevation="5dp"
                app:cardCornerRadius="10dp"
                android:background="@android:color/secondary_text_light_nodisable"
                android:layout_
                android:layout_weight="1"
                android:layout_>

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:orientation="horizontal"
                    android:padding="20dp">

                    <ImageView
                        android:layout_
                        android:id="@+id/iv_temp"
                        android:layout_
                        android:src="@drawable/temperature"/>

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="end"
                        android:layout_weight="2"
                        android:orientation="vertical"
                        android:gravity="center_vertical">

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="Minimum"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textSize="17sp"
                            android:textColor="@android:color/black"
                            android:id="@+id/tv_minimum"/>

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="Maximum"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textColor="@color/quantum_grey600"
                            android:textSize="15sp"
                            android:id="@+id/tv_maximum"/>


                    </LinearLayout>

                </LinearLayout>

            </androidx.cardview.widget.CardView>
            <androidx.cardview.widget.CardView
                app:cardElevation="5dp"
                android:layout_marginStart="10dp"
                app:cardCornerRadius="10dp"
                android:background="@android:color/secondary_text_light_nodisable"
                android:layout_
                android:layout_weight="1"
                android:layout_>

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:orientation="horizontal"
                    android:padding="20dp">

                    <ImageView
                        android:layout_
                        android:id="@+id/iv_wind"
                        android:layout_
                        android:src="@drawable/wind"/>

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="end"
                        android:layout_weight="2"
                        android:orientation="vertical"
                        android:gravity="center_vertical">

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="Wind"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textSize="17sp"
                            android:textColor="@android:color/black"
                            android:id="@+id/tv_wind"/>

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="miles/hour"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textColor="@color/quantum_grey600"
                            android:textSize="15sp"
                            android:id="@+id/tv_miles"/>


                    </LinearLayout>

                </LinearLayout>

            </androidx.cardview.widget.CardView>

        </LinearLayout>

        <androidx.cardview.widget.CardView
            android:layout_
            android:layout_marginTop="10dp"
            android:layout_
            app:cardElevation="5dp"
            app:cardCornerRadius="10dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_
                android:layout_
                android:padding="20dp">

                <LinearLayout
                    android:layout_
                    android:layout_>

                    <ImageView
                        android:layout_
                        android:layout_
                        android:src="@drawable/location"
                        android:id="@+id/iv_location"/>

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="end"
                        android:layout_weight="2"
                        android:orientation="vertical"
                        android:gravity="center_vertical">

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="Name"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textSize="17sp"
                            android:textColor="@android:color/black"
                            android:id="@+id/tv_name"/>

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="country"
                            android:gravity="end"
                            android:textStyle="bold"
                            android:textColor="@color/quantum_grey600"
                            android:textSize="15sp"
                            android:id="@+id/tv_country"/>


                    </LinearLayout>


                </LinearLayout>

                <View
                    android:layout_
                    android:layout_
                    android:layout_margin="16dp"
                    android:background="@color/quantum_grey" />

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:gravity="center_horizontal"
                    android:orientation="horizontal">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:orientation="vertical">

                        <ImageView
                            android:layout_
                            android:layout_
                            android:src="@drawable/sunrise"/>

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="sunrise"
                            android:gravity="center"
                            android:id="@+id/tv_sunrise"/>

                    </LinearLayout>

                    <LinearLayout
                        android:layout_marginStart="20dp"
                        android:layout_
                        android:layout_
                        android:orientation="vertical">

                        <ImageView
                            android:layout_
                            android:layout_
                            android:src="@drawable/sunset"/>

                        <TextView
                            android:layout_
                            android:layout_
                            android:text="sunset"
                            android:gravity="center"
                            android:id="@+id/tv_sunset"/>

                    </LinearLayout>

                </LinearLayout>

            </LinearLayout>

        </androidx.cardview.widget.CardView>

    </LinearLayout>

【问题讨论】:

请出示您的崩溃日志 它给出了一个错误提示,error inflating androidx.cardview.widget.CardView 我们需要完整的堆栈跟踪,而不仅仅是其中的一行。 同时添加你的 build.gradle 我已经在问题中添加了gradle和错误日志 【参考方案1】:

请添加卡片视图依赖

implementation 'androidx.cardview:cardview:1.0.0'

并使用

app:background="@android:color/secondary_text_light_nodisable"

app:cardBackgroundColor="@android:color/secondary_text_light_nodisable"

【讨论】:

用应用替换安卓 使用此解决方案后代码对我有用,谢谢!! 我很乐意提供帮助

以上是关于谁能解释一下为啥这个 android 布局不工作并且在活动启动后立即使活动崩溃的主要内容,如果未能解决你的问题,请参考以下文章

谁能解释一下这个java代码是如何工作的?

谁能解释一下这个python代码中提到的一行的工作原理?

无法理解数据更改通知如何与 Android 中的 Firestore 一起使用。谁能解释一下? [复制]

谁能解释一下这个 NSPredicate 语法

谁能解释一下 vuetify 主题代码

谁能给我解释一下这个 IOCP 图?