资源可用时的ResourcesNotFoundException(API 22和23设备)

时间:2018-02-08 15:05:47

标签: android exception svg drawable

我只在API 22和23设备上发生此崩溃。

  

(android.content.res.Resources $ NotFoundException:File   来自可绘制资源ID#0x7f080156的res / drawable / show_empty_state.xml                                                                                            在   android.content.res.Resources.loadDrawableForCookie(Resources.java:2640)                                                                                            在android.content.res.Resources.loadDrawable(Resources.java:2540)                                                                                            在android.content.res.Resources.getDrawable(Resources.java:806)                                                                                            在android.content.Context.getDrawable(Context.java:458)                                                                                            在   android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:358)                                                                                            at com.myProj.utils.EmptyStateView.setImage(EmptyStateView.java:55)                                                                                            在com.myProj.tab_two.ShowFragment.onCreateView(ShowFragment.java:111)                                                                                            在   android.support.v4.app.Fragment.performCreateView(Fragment.java:2261)

资源肯定存在,它可以在更高的设备上正常工作。我最近唯一的改变是使用SVG替换show_empty_state的新矢量图像。 我确实看了一些其他相关的问题。到目前为止找不到答案。任何帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:2)

崩溃是因为矢量资产为< 24台设备提供了gradient标记。

  

机器人:填充颜色
      指定用于填充路径的颜色。也许        一种颜色,或者,对于SDK 24+,颜色状态列表或渐变颜色(参见       GradientColor和GradientColorItem)。如果此属性是动画的,则任何       动画设置的值将覆盖原始值。没有       如果未指定此属性,则绘制路径填充。

替换

<gradient android:endX="45300.0" android:endY="-86698.0"
       <android:startX="45300.0" android:startY="-3118.0" android:type="linear">
       <item android:color="#FF1AA186" android:offset="0.0"/>
       <item android:color="#FF23B899" android:offset="1.0"/>
 </gradient>

android:fillColor="#FF1AA186"

修复它。

更好的是用非梯度替换资产<24 sdk。

答案 1 :(得分:0)

你需要确保你的矢量drawable的内部路径标记你使用填充颜色作为十六进制代码而不是任何对颜色文件的引用。

例如:

您需要使用

android:fillColor="#FFFFaa"

而不是

android:fillColor="@color/colorname"