Android Studio Kotlin启动新Activity时出现InflateException致命错误
核心崩溃链路定位:布局加载异常→目标drawable资源找不到→解析shape类失败,故障点和Activity跳转逻辑、Manifest配置无关,完全是default_option_border_bg资源相关问题,按以下步骤逐一排查修复:
第一步:核对资源存放路径
确认default_option_border_bg.xml存放于res/drawable通用目录下,不要误放在drawable-v24等带系统版本限定的目录(minSdk低于对应版本时系统无法读取该目录资源),也不要错放到layout、mipmap、values等其他资源目录。同时检查文件名全小写、无特殊字符、后缀为.xml,和布局中@drawable/default_option_border_bg的引用拼写完全一致。第二步:核对drawable文件代码
底层抛出ClassNotFoundException找不到Shape类,是shape资源标签/命名空间写错导致的:- 打开
default_option_border_bg.xml,确认根标签为全小写的<shape>,首字母大写时系统会将其识别为自定义View类做反射查找,直接触发类找不到异常 - 确认根标签正确声明android命名空间,标准文件结构参考如下:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <stroke android:width="2dp" android:color="#CCCCCC" /> <corners android:radius="16dp" /> <solid android:color="@android:color/transparent" /> </shape>- 不要在shape文件内写入自定义View全类名,不要遗漏命名空间声明。
- 打开
第三步:清理编译缓存验证
Android Studio资源索引缓存异常也会偶发此类报错,完成上述检查后依次执行Build > Clean Project、Build > Rebuild Project,重新运行应用即可。
快速验证技巧:可临时删除activity_quiz_questions布局第66行TextView的
android:background="@drawable/default_option_border_bg"属性,若运行不再崩溃,可完全确认故障点就是该drawable资源,对照上述步骤逐一核对即可。
内容的提问来源于stack exchange,提问作者Yun

