You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose导航报错:CreationExtras缺少SAVED_STATE_REGISTRY_OWNER_KEY

解决Jetpack Compose导航中的SAVED_STATE_REGISTRY_OWNER_KEY错误

错误原因

这个异常是因为ViewModel或导航操作未获取到有效的SavedStateRegistryOwner——这是Jetpack组件保存状态的核心依赖,通常由NavHost或Activity提供。结合你使用Hilt导航的场景,常见触发原因包括:

  • ViewModel未通过hiltViewModel()正确注入,导致缺失状态注册表关联
  • 导航操作时机不当(比如在Composable未完成初始化、或ViewModel的init块中直接调用navigate)
  • 依赖版本不兼容(你使用的hilt-navigation-compose:1.0.0是较旧版本,可能和其他Jetpack库版本不匹配)

具体修复步骤

1. 确保ViewModel通过hiltViewModel()获取

在Composable中必须使用Hilt提供的hiltViewModel()获取ViewModel,而非普通的viewModel():

// 正确写法
val viewModel: YourViewModel = hiltViewModel()

这会自动将NavHost的SavedStateRegistryOwner关联到ViewModel,避免状态注册表缺失问题。

2. 调整导航触发时机

不要在ViewModel的init块或Composable初始渲染阶段直接执行导航,改用LaunchedEffect包裹逻辑,确保在Composable稳定后执行:

val viewModel: YourViewModel = hiltViewModel()
val navController = rememberNavController()

LaunchedEffect(viewModel.isAuthenticated) {
    if (viewModel.isAuthenticated) {
        navController.navigate(Screen.Profile.route) {
            // 可选:添加导航行为,比如清除回退栈
            popUpTo(Screen.Login.route) { inclusive = true }
        }
    }
}

LaunchedEffect会监听isAuthenticated的变化,仅在状态改变且Composable活跃时执行导航。

3. 更新依赖版本(可选但推荐)

旧版本的hilt-navigation-compose可能存在兼容性问题,建议升级到最新稳定版,同时确保相关依赖版本匹配:

// 升级hilt导航依赖
implementation "androidx.hilt:hilt-navigation-compose:1.1.0"
// 确保hilt核心版本一致
implementation "com.google.dagger:hilt-android:2.48"
kapt "com.google.dagger:hilt-android-compiler:2.48"

4. 检查NavHost配置

确保NavHost在正确上下文(如Activity的Composable内容)中创建,并使用rememberNavController():

@Composable
fun AppNavHost() {
    val navController = rememberNavController()
    NavHost(
        navController = navController,
        startDestination = Screen.Login.route
    ) {
        composable(Screen.Login.route) {
            LoginScreen(viewModel = hiltViewModel(), navController = navController)
        }
        composable(Screen.Profile.route) {
            ProfileScreen(viewModel = hiltViewModel())
        }
    }
}

内容的提问来源于stack exchange,提问作者Always Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:45:11