首页 > 解决方案 > 资源确实存在,但 Resources$NotFoundException 导致 InflateException

问题描述

这是关于来自用户的 Firebase Crashlytics 报告,我无法让它崩溃。它每次都对我有用。

InflateException: Binary XML file line #19: Binary XML file line #19: 
Error inflating class androidx.appcompat.widget.AppCompatImageButton
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)

Caused by: Resources$NotFoundException: Drawable com.inadaydevelopment.herdboss:drawable/button_close_24dp 
with resource ID #0x7f08006d

Caused by Resources$NotFoundException: File res/drawable/button_close_24dp.xml 
from drawable resource ID #0x7f08006d

Caused by Resources$NotFoundException: Drawable (missing name) 
with resource ID #0x7f08006e

Caused by Resources$NotFoundException: Unable to find resource ID #0x7f08006e
       at android.content.res.ResourcesImpl.getResourceName(ResourcesImpl.java:253)
       at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:760)
       at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:630)
       at android.content.res.Resources.loadDrawable(Resources.java:886)
       at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:953)
       at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
       at android.content.res.XResources$XTypedArray.getDrawable(XResources.java:1363)
       at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:177)
       at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:122)

我相信resource ID #0x7f08006d是在中定义的选择器res/drawable/button_close_24dp.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:drawable="@drawable/button_close_grey_24dp" />
    <item android:drawable="@drawable/button_close_white_24dp" />
</selector>

它引用@drawable/button_close_grey_24dp并且@drawable/button_close_white_24dp其中之一必须是resource ID #0x7f08006e异常根目录中的资源。

这些资源中的每一个都有两个版本,一个 png inres/drawable和一个 xml vector drawable in res/drawable-nodpi

文件列表的屏幕截图,显示了可绘制对象的多个版本

因此,据我所知,所有资源都在那里并且位于适当的位置,以便新设备或旧设备可以找到它们。

我错过了什么?

标签: androidandroid-drawableandroid-resourcesandroid-selector

解决方案


推荐阅读