Widget.Material.Light.ProgressBar.Horizontal" (10302b8) is not a Drawable (color or path)错误解决

博客围绕QuestionActivity.java对应queitem.xml文件中,android:progressDrawable语句报错问题展开。指出这可能是Android新旧版本不兼容bug,分析了模拟器不报错及运行才报错的原因,如API19不引用布局不报错,API5.0模拟器会报错。

参考:https://bbs.csdn.net/topics/392415360?page=1

问题:

    --------- beginning of crash
05-23 18:36:40.164 3557-3557/com.lidan.xiao.danquestion E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.lidan.xiao.danquestion, PID: 3557
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lidan.xiao.danquestion/com.lidan.xiao.danquestion.activity.QuestionActivity}: android.view.InflateException: Binary XML file line #10: Error inflating class <unknown>
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
        at android.app.ActivityThread.access$800(ActivityThread.java:153)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5293)
        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:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class <unknown>
        at android.view.LayoutInflater.createView(LayoutInflater.java:633)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
        at com.lidan.xiao.danquestion.activity.QuestionActivity.createView(QuestionActivity.java:176)
        at com.lidan.xiao.danquestion.activity.QuestionActivity.access$300(QuestionActivity.java:39)
        at com.lidan.xiao.danquestion.activity.QuestionActivity$2.getView(QuestionActivity.java:168)
        at android.widget.AdapterViewAnimator.showOnly(AdapterViewAnimator.java:548)
        at android.widget.AdapterViewAnimator.setAdapter(AdapterViewAnimator.java:971)
        at android.widget.AdapterViewFlipper.setAdapter(AdapterViewFlipper.java:144)
        at com.lidan.xiao.danquestion.activity.QuestionActivity.initView(QuestionActivity.java:172)
        at com.lidan.xiao.danquestion.activity.QuestionActivity.onCreate(QuestionActivity.java:72)
        at android.app.Activity.performCreate(Activity.java:5990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) 
        at android.app.ActivityThread.access$800(ActivityThread.java:153) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5293) 
        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:903) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
        at android.view.LayoutInflater.createView(LayoutInflater.java:607)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity.createView(QuestionActivity.java:176) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity.access$300(QuestionActivity.java:39) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity$2.getView(QuestionActivity.java:168) 
        at android.widget.AdapterViewAnimator.showOnly(AdapterViewAnimator.java:548) 
        at android.widget.AdapterViewAnimator.setAdapter(AdapterViewAnimator.java:971) 
        at android.widget.AdapterViewFlipper.setAdapter(AdapterViewFlipper.java:144) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity.initView(QuestionActivity.java:172) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity.onCreate(QuestionActivity.java:72) 
        at android.app.Activity.performCreate(Activity.java:5990) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) 
        at android.app.ActivityThread.access$800(ActivityThread.java:153) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5293) 
        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:903) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
     Caused by: android.content.res.Resources$NotFoundException: Resource "android:style/Widget.Material.Light.ProgressBar.Horizontal" (10302b8)  is not a Drawable (color or path): TypedValue{t=0x1/d=0x10302b8 a=-1 r=0x10302b8}
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2441)
        at android.content.res.Resources.loadDrawable(Resources.java:2381)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
        at android.widget.ProgressBar.<init>(ProgressBar.java:267)
        at android.widget.ProgressBar.<init>(ProgressBar.java:253)
        at android.widget.ProgressBar.<init>(ProgressBar.java:249)
        at java.lang.reflect.Constructor.newInstance(Native Method) 
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
        at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity.createView(QuestionActivity.java:176) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity.access$300(QuestionActivity.java:39) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity$2.getView(QuestionActivity.java:168) 
        at android.widget.AdapterViewAnimator.showOnly(AdapterViewAnimator.java:548) 
        at android.widget.AdapterViewAnimator.setAdapter(AdapterViewAnimator.java:971) 
        at android.widget.AdapterViewFlipper.setAdapter(AdapterViewFlipper.java:144) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity.initView(QuestionActivity.java:172) 
        at com.lidan.xiao.danquestion.activity.QuestionActivity.onCreate(QuestionActivity.java:72) 
        at android.app.Activity.performCreate(Activity.java:5990) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) 
        at android.app.ActivityThread.access$800(ActivityThread.java:153) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5293) 
        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:903) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

QuestionActivity.java:176)对应的是

root = LayoutInflater.from(QuestionActivity.this).inflate(R.layout.queitem, null);

从而看出是queitem.xml中问题,这个文件有两个(一般和V21,SDK5.0)。在其中搜Widget.Material.Light.ProgressBar.Horizontal。(V21中存在)

这句话android:progressDrawable="@android:style/Widget.Material.Light.ProgressBar.Horizontal"为什么会报错呢?

之前能用,现在不能,应该是android新旧版本不兼容bug。网上正确用法如下。

 

解决:

原因:为什么没有模拟器没有报错  是因为API19不会去引用这个布局所以不会报错
之所以运行才报错 是因为这只是一个运行时异常 且符合编译规则,只有运行后才会出错。API5.0的模拟器就会报错。

原代码:

        <ProgressBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"  
            android:progressDrawable="@android:style/Widget.Material.Light.ProgressBar.Horizontal"/>

改为

        <ProgressBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/Widget.AppCompat.ProgressBar.Horizontal"/>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄人软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值