Android Resources$NotFoundException异常:status_searching资源加载失败
问题分析与解决方案
异常核心信息
Fatal Exception: android.content.res.Resources$NotFoundException: Drawable org.radarcns.detail:drawable/status_searching with resource ID #0x7f080130 Caused by android.content.res.Resources$NotFoundException: Resource "org.radarcns.detail:drawable/status_searching" (7f080130) is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f080130 a=11 r=0x7f080130}
关联代码与资源
- 调用代码:
private val mStatusIcon: ImageView = findViewById(R.id.status_icon) mStatusIcon.setImageResource(R.drawable.status_searching)
status_searching.xml(drawable目录下):
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/ic_searching" /> </layer-list>
ic_searching.png已存在于drawable-hdpi/mdpi/xhdpi/xxhdpi目录。
可能原因及解决办法
1. 资源命名冲突
项目中可能存在其他类型的资源(如string、color、layout)使用了status_searching这个名称,导致R文件中该名称对应的ID被映射到了非Drawable资源上。
- 解决:全局搜索项目中所有资源文件,确保
status_searching仅作为Drawable资源存在,重命名冲突的资源。
2. 构建缓存或R文件生成异常
Android Studio的缓存或Gradle构建缓存可能导致R文件中资源ID映射错误,系统无法正确识别status_searching为Drawable类型。
- 解决:
- 执行
File > Invalidate Caches... > Invalidate and Restart重启Android Studio; - 运行命令行清理构建缓存:
./gradlew clean build(Windows环境使用gradlew.bat clean build)。
- 执行
3. 图层列表资源的解析问题
虽然当前图层列表语法看起来正确,但某些AGP版本或编译环境可能对单Item的图层列表解析存在异常。
- 解决:
- 临时替换调用代码,直接使用
mStatusIcon.setImageResource(R.drawable.ic_searching),绕开图层列表验证是否仍报错; - 如果必须使用图层列表,尝试添加额外属性(如
android:gravity="center")或者重新创建图层列表文件。
- 临时替换调用代码,直接使用
4. 密度资源缺失或资源目录配置问题
虽然ic_searching.png存在于多个密度目录,但可能缺失更高密度(如xxxhdpi)的资源,或者drawable目录的配置存在问题,间接导致图层列表资源解析失败。
- 解决:
- 将
ic_searching.png复制到drawable通用目录,确保所有设备都能找到该资源; - 检查
build.gradle中resConfigs配置,是否过滤了某些密度导致资源无法被识别。
- 将
5. Android Gradle Plugin(AGP)版本bug
特定版本的AGP可能存在Drawable资源解析的bug,导致图层列表类的XML资源被错误识别。
- 解决:尝试升级AGP到稳定版本,或降级到之前能正常构建的版本,验证问题是否消失。
内容的提问来源于stack exchange,提问作者Aditya Mishra
相关产品推荐
相关产品推荐

