Android Spinner选择跳转非Arabica页面崩溃问题求助
Android Spinner选择跳转崩溃排查与解决
排查步骤
- 首先核对
AndroidManifest.xml注册配置:Arabica页跳转正常说明Manifest配置逻辑没问题,优先确认Liberica、Robusta、Excelsa三个对应Activity是否完成注册,注册的类名、包路径是否和实际代码一致,大小写、拼写是否有笔误 - 检查
onItemSelectedListener回调中的Intent构造代码:确认选中三个异常选项时,Intent的第二个参数XXXActivity.class类名拼写正确,没有和实际类名不匹配的问题;如果是用ComponentName全路径构造Intent,要核对全路径字符串和Manifest注册的是否完全一致 - 定位崩溃日志的根因:如果日志
Caused by字段报ActivityNotFoundException,100%是上述注册或Intent类名写错的问题;如果报NullPointerException,优先检查目标Activity的onCreate方法中是否存在findViewById绑定了不存在的控件id、getIntent()取参数时未做非空判断就调用方法的问题;如果报ClassCastException,检查跳转传参的类型和目标页取值的类型是否匹配 - 验证目标页代码逻辑:先单独给Liberica页设置为启动页测试是否能正常打开,如果单独打开就崩溃,说明是Liberica页自身的布局或代码问题,和跳转逻辑无关
解决方法
按优先级操作可快速定位问题:
- 直接复制Manifest中Arabica页的注册代码,修改类名后补充另外三个Activity的注册,避免手动拼写错误
- 临时把三个异常选项的跳转目标都改成Arabica页,测试是否崩溃,如果不崩说明是原跳转目标类的配置问题,再逐个替换回对应类排查
- 给目标Activity的
onCreate方法首行加日志,确认跳转时是否执行到了目标页生命周期:没执行就是Manifest或Intent构造的问题,已执行就是目标页内部代码的问题,针对性排查对应代码即可
内容的提问来源于stack exchange,提问作者TheGamerPotato
相关产品推荐
相关产品推荐

