升级依赖库后点击导航按钮出现SAVED_STATE_REGISTRY_OWNER_KEY异常求助
解决
CreationExtras must have a value by SAVED_STATE_REGISTRY_OWNER_KEY异常 问题核心
升级AGP至8.3.2并更新依赖后触发该异常,本质是依赖版本不兼容——尤其是Lifecycle、Hilt Navigation Compose的版本冲突,加上alpha版本依赖的不稳定特性共同导致。
具体修复步骤
统一Lifecycle依赖版本
当前混用了稳定版lifecycle-runtime-ktx:2.7.0和alpha版lifecycle-runtime-compose:2.8.0-alpha04,alpha版本易引发兼容性问题,替换为匹配的稳定版:// 移除alpha版本依赖 // implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.0-alpha04") // 添加与lifecycle-runtime-ktx版本一致的稳定版 implementation("androidx.lifecycle:lifecycle-runtime-compose:2.7.0")升级Hilt Navigation Compose到稳定版
你使用的hilt-navigation-compose:1.1.0-alpha01是测试版,与hilt-android:2.51.1版本不匹配,替换为对应稳定版:implementation("androidx.hilt:hilt-navigation-compose:1.1.0")规范导航中ViewModel的获取方式
确保在NavHost内使用Hilt提供的扩展方法获取ViewModel,避免直接调用默认的viewModel():// 单导航图内获取ViewModel val viewModel: YourViewModel = hiltViewModel() // 跨导航图共享ViewModel val viewModel: YourViewModel = hiltNavGraphViewModels(R.id.target_nav_graph_id)清理缓存并重新构建
AGP升级后缓存易残留旧依赖信息,执行以下操作彻底清理:- 点击Android Studio菜单栏
File -> Invalidate Caches...,选择Invalidate and Restart - 删除项目根目录的
.gradle、build文件夹,以及模块下的build文件夹 - 执行命令:
./gradlew clean build
- 点击Android Studio菜单栏
调整后核心依赖参考(版本对齐)
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0") implementation("androidx.lifecycle:lifecycle-runtime-compose:2.7.0") implementation("androidx.activity:activity-compose:1.8.2") implementation("androidx.navigation:navigation-compose:2.7.7") implementation("androidx.hilt:hilt-navigation-compose:1.1.0") implementation("com.google.dagger:hilt-android:2.51.1") kapt("com.google.dagger:hilt-android-compiler:2.51.1")
内容的提问来源于stack exchange,提问作者gkhn.akbs
相关产品推荐
相关产品推荐

