Binary XML file line #9: Error inflating class

报错日志

02-22 23:12:44.403 29776-29776/com.example.btn_press E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.btn_press, PID: 29776
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.btn_press/com.example.btn_press.MainActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class Button
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2361)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2423)
        at android.app.ActivityThread.access$1000(ActivityThread.java:154)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5315)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)
     Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class Button
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:767)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:810)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:508)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:418)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at com.example.btn_press.MainActivity.onCreate(MainActivity.java:12)
        at android.app.Activity.performCreate(Activity.java:6098)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2423) 
        at android.app.ActivityThread.access$1000(ActivityThread.java:154) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5315) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 
     Caused by: android.content.res.Resources$NotFoundException: File res/color/btn_bg_state.xml from drawable resource ID #0x7f040024
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2579)
        at android.content.res.Resources.loadDrawable(Resources.java:2468)
        at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:394)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:771)
        at android.view.View.<init>(View.java:3746)
        at android.widget.TextView.<init>(TextView.java:640)
        at android.widget.Button.<init>(Button.java:111)
        at android.widget.Button.<init>(Button.java:107)
        at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:71)
        at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:67)
        at androidx.appcompat.app.AppCompatViewInflater.createButton(AppCompatViewInflater.java:187)
        at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:110)
        at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266)
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:729)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:810) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:508) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:418) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at com.example.btn_press.MainActivity.onCreate(MainActivity.java:12) 
        at android.app.Activity.performCreate(Activity.java:6098) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2423) 
        at android.app.ActivityThread.access$1000(ActivityThread.java:154) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5315) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 
     Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #3: <item> tag requires a 'drawable' attribute or child tag defining a drawable
        at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:194)
        at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:127)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1130)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1034)
        at android.content.res.Resources.createFromXml(Resources.java:2884)
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2565)
        at android.content.res.Resources.loadDrawable(Resources.java:2468) 
        at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:394) 
        at android.content.res.TypedArray.getDrawable(TypedArray.java:771) 
        at android.view.View.<init>(View.java:3746) 
        at android.widget.TextView.<init>(TextView.java:640) 
        at android.widget.Button.<init>(Button.java:111) 
        at android.widget.Button.<init>(Button.java:107) 
        at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:71) 
        at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:67) 
        at androidx.appcompat.app.AppCompatViewInflater.createButton(AppCompatViewInflater.java:187) 
        at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:110) 
        at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266) 
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:729) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:810) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:508) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:418) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at com.example.btn_press.MainActivity.onCreate(MainActivity.java:12) 
        at android.app.Activity.performCreate(Activity.java:6098) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2423) 
        at android.app.ActivityThread.access$1000(ActivityThread.java:154) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5315) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 

报错关键信息

 02-22 23:12:44.403 29776-29776/com.example.btn_press E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.btn_press, PID: 29776
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.btn_press/com.example.btn_press.MainActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class Button
        
     Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class Button
       
     Caused by: android.content.res.Resources$NotFoundException: File res/color/btn_bg_state.xml from drawable resource ID #0x7f040024
       
     Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #3: <item> tag requires a 'drawable' attribute or child tag defining a drawable
       

 原因

多半是因为 "android:background"书写的问题

当为 "android:background" 设置颜色选择器(selector)时,绑定“@color/xxx” 是错误的写法,如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是一个button"
        android:background="@color/btn_bg_state"   //这种写法是错误的
        android:textColor="@color/btn_bg_state"
        android:layout_centerInParent="true"/>

</RelativeLayout>

尽管存在color文件夹及btn_bg_state.xml文件

解决方法

正确书写方式:如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是一个button"
        android:background="@drawable/btn_bg_state"  //正确的书写方式
        android:textColor="@color/btn_bg_state"
        android:layout_centerInParent="true"/>

</RelativeLayout>

 配套的 drawable 文件夹下的 btn_bg_start.xml 文件书写方式

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <color android:color="#000"/>
    </item>
    <item android:state_pressed="true">
        <color android:color="#ccc"/>
    </item>
</selector>

效果图

未点击效果图

点击效果图

 

猜你喜欢

转载自blog.csdn.net/qq_41885673/article/details/113961965
今日推荐