首页 文章

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

提问于
浏览
1

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

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

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

2 回答

  • 0

    崩溃是因为矢量资产具有<24个设备的 gradient 标记 .

    android:fillColor指定用于填充路径的颜色 . 对于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 .

  • 2

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

    例如:

    你需要使用

    android:fillColor="#FFFFaa"
    

    代替

    android:fillColor="@color/colorname"
    

相关问题