Android应用报Unable to start activity错误致应用停止如何解决

你遇到的java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.loginpanel2/com.example.loginpanel2.MainActivity}是Activity启动失败的通用外层异常,真正的错误原因藏在该异常后续的Caused by:栈信息里,你目前贴出的日志只截了外层提示,按以下步骤定位修复即可:
定位步骤
- 拉取完整崩溃日志:打开Android Studio底部的Logcat面板,日志级别筛选为Error,过滤包名
com.example.loginpanel2,找到崩溃时间点对应的完整日志,定位到Caused by:开头的行,这行标注的才是根因。 - 断点调试定位:在MainActivity的
onCreate方法第一行打调试断点,以Debug模式启动应用,逐行执行代码,触发崩溃时停留的代码行就是问题点。
高频根因与对应修复
- 根因为
NullPointerException:检查setContentView执行完成后,有没有漏写控件的findViewById绑定,有没有在控件未初始化时就调用控件的方法,有没有传入空值给初始化逻辑,补全判空和绑定逻辑即可。 - 根因为
InflateException/Resources$NotFoundException:检查setContentView传入的布局ID是否和实际布局文件匹配,布局中引用的字符串、图片、自定义控件资源是否存在,不要在低版本系统兼容的布局里使用高版本API才支持的UI属性。 - 根因为
ClassNotFoundException:检查MainActivity是否在AndroidManifest.xml中正确注册,类的全路径是否和代码里的实际路径一致,有没有开启混淆后误删Activity类,有没有漏导入依赖的第三方库。 - 根因为
SecurityException:检查是否在未申请运行时权限的情况下,直接调用了需要权限的接口(比如读写存储、获取位置、读取通讯录等),先按系统版本要求完成权限申请再执行对应逻辑。 - 根因为
NetworkOnMainThreadException:不要在主线程(UI线程)里执行耗时网络请求,把网络逻辑放到子线程或者用协程、RxJava等异步框架处理。
注意:这类启动崩溃90%的场景都是onCreate阶段的代码写错,优先拉取完整的Caused by日志,不需要盲目改代码。
内容的提问来源于stack exchange,提问作者tual
相关产品推荐
相关产品推荐

