添加启动闪屏页后模拟器运行报错:Resources$NotFoundException
看起来你在给应用加闪屏页的时候踩了资源找不到的坑,这个错误我见得挺多的,核心原因就是系统没法定位到你指定的background_splash这个Drawable资源,下面给你几个实用的排查和解决方向:
先确认资源文件是否真的存在
去你的项目res/drawable目录(或者对应分辨率的drawable子目录,比如drawable-hdpi、drawable-xhdpi)里找找,有没有background_splash.xml或者对应的图片文件。如果是VectorDrawable,还要注意别把它放在drawable-v24这类高版本专属目录里,不然低版本模拟器会找不到。检查资源引用的拼写和格式
不管你是在SplashActivity的布局文件里引用,还是在主题里设置闪屏背景,一定要确保拼写完全正确——比如有没有少写字母、大小写搞错?举个例子,如果你是在主题里配置的:<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowBackground">@drawable/background_splash</item> </style>这里的
@drawable/background_splash必须和文件名完全匹配,一点错都不能有。清理缓存并重建项目
有时候是Android Studio的资源缓存搞的鬼,明明文件存在但系统就是读不到。试试这几步:- 点击顶部菜单栏的
Build->Clean Project - 接着点击
Build->Rebuild Project - 重启模拟器,再重新安装应用试试
- 点击顶部菜单栏的
检查XML Drawable的语法正确性
如果background_splash是一个XML格式的Drawable(比如layer-list或者shape),打开它看看有没有语法错误——比如标签没闭合、属性名写错了之类的。Android Studio的编辑器会给错误标红,把这些问题修复后再运行。适配低版本模拟器的VectorDrawable
如果你用了VectorDrawable,而模拟器的API版本低于21,记得在Module级别的build.gradle里添加兼容配置:android { defaultConfig { vectorDrawables.useSupportLibrary = true } }要是是在ImageView里引用,记得用
app:srcCompat代替android:src;如果是在主题里设置,确保你的主题继承自支持库的主题(比如Theme.AppCompat开头的)。
内容的提问来源于stack exchange,提问作者Aidin Zardast

