Android Studio应用反复闪退 提示未设置NavController
问题现象
上次打开项目时应用可正常运行,确认未手动修改任何代码的前提下,当前应用启动即持续闪退,无法正常打开,崩溃日志如下:
2022-06-07 21:06:18.942 7244-7244/com.example.labactivity01layoutsandactivity E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.labactivity01layoutsandactivity, PID: 7244 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.labactivity01layoutsandactivity/com.example.labactivity01layoutsandactivity.MainActivity}: java.lang.IllegalStateException: Activity com.example.labactivity01layoutsandactivity.MainActivity@661d5fe does not have a NavController set on 2131231012 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.IllegalStateException: Activity com.example.labactivity01layoutsandactivity.MainActivity@661d5fe does not have a NavController set on 2131231012 at androidx.navigation.Navigation.findNavController(Navigation.java:61) at androidx.navigation.ActivityKt.findNavController(Activity.kt:30) at com.example.labactivity01layoutsandactivity.MainActivity.onCreate(MainActivity.kt:26) at android.app.Activity.performCreate(Activity.java:6662) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
报错根因
核心报错是MainActivity 没有在ID为2131231012的视图上绑定NavController,触发点在MainActivity.kt第26行的onCreate方法里,属于Jetpack Navigation组件的关联异常。既然确认没改代码,90%以上是Android Studio增量编译缓存错乱、资源ID映射失效导致的,剩下10%是意外的布局文件改动、代码执行顺序问题。
修复方案
按以下顺序排查,基本都能解决:
- 先做最省事的缓存清理:在Android Studio顶部菜单栏依次点
Build->Clean Project,执行完成后再点Build->Rebuild Project,重新编译运行,大部分无代码改动的突发崩溃都是增量编译的锅,这步就能解决 - 如果清理重编没用,先检查
MainActivity的onCreate方法代码顺序:必须先调用setContentView()加载完布局文件,再执行findNavController()相关逻辑,不能在布局加载完成前就获取NavController - 接着检查布局文件里的导航宿主配置:报错里的ID 2131231012对应的是你放
NavHostFragment的容器,确认这个控件没有被误删、ID没有写错,且NavHostFragment已经通过app:navGraph属性正确关联了你的导航图xml文件 - 以上操作都无效的话,直接关闭Android Studio,删除项目根目录下的
.gradle文件夹和app模块下的build文件夹,重启IDE重新同步Gradle后再编译即可
内容的提问来源于stack exchange,提问作者Nihilopis R.R
相关产品推荐
相关产品推荐

