嵌套布局文件夹引发Resources$NotFoundException问题求助
解决Android布局子文件夹导致的Resources$NotFoundException问题
问题原因
你在sourceSets中配置的资源目录路径不符合Android Gradle插件的资源识别规则:
- Android资源系统要求每个资源根目录下必须包含标准资源子目录(如
layout、drawable) - 你添加了多层嵌套的目录(
src\\main\\res\\layouts、src\\main\\res\\layouts\\king_panel、src\\main\\res\\layouts\\king_panel\\layout),导致Gradle无法正确解析资源归属,进而出现资源ID找不到的异常。
解决方案
1. 调整目录结构
将布局文件放在符合资源规范的子目录下,建议结构:
src/main/res/ ├── layout/ # 通用布局文件 └── layouts/ └── king_panel/ └── layout/ # king_panel相关布局文件(如king_panel_geoloc.xml)
2. 修改sourceSets配置
只需要将包含标准资源子目录的文件夹添加到res.srcDirs中,修改app/build.gradle:
sourceSets { main { // 只添加king_panel的资源根目录,内部包含layout子文件夹 res.srcDirs += 'src/main/res/layouts/king_panel' } }
3. 清理并重建项目
执行以下操作确保资源正确生成:
- 点击Android Studio菜单栏的
Build > Clean Project - 然后点击
Build > Rebuild Project - 重启Android Studio(可选,避免缓存问题)
额外排查点
如果仍报错,检查以下内容:
- 确认
king_panel_geoloc.xml第18行引用的资源(如drawable、string、id)是否存在,且没有拼写错误 - 检查资源ID冲突:使用
./gradlew app:lint命令扫描潜在的资源问题 - 确保所有布局文件的文件名符合Android资源命名规范(小写字母、下划线,无特殊字符)
内容的提问来源于stack exchange,提问作者Charles Semaan
相关产品推荐
相关产品推荐

