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

Jetpack Compose页面导航报错:缺失SAVED_STATE_REGISTRY_OWNER_KEY

解决Jetpack Compose导航时的CreationExtras must have a value by SAVED_STATE_REGISTRY_OWNER_KEY错误

错误原因

这个错误核心是ViewModel创建时缺少SavedStateRegistryOwner上下文,多见于Hilt与Jetpack Navigation结合时的配置疏漏,或是ViewModel获取方式不符合规范。

解决步骤

1. 补全Hilt基础配置

  • 确保Application类标注@HiltAndroidApp:
@HiltAndroidApp
class MyApp : Application()
  • 确保承载Compose的Activity标注@AndroidEntryPoint:
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            YourAppTheme {
                val navController = rememberNavController()
                SetupNavGraph(navController)
            }
        }
    }
}

2. 修正ViewModel获取方式

在MainScreen/DetailsScreen中,必须用hiltViewModel()获取ViewModel,禁止手动实例化或错误使用ViewModelProvider:

@Composable
fun MainScreen(navController: NavHostController) {
    // 正确获取ViewModel
    val viewModel: MainViewModel = hiltViewModel()
    
    // 页面交互逻辑
    Button(onClick = { navController.navigate(Screens.DetailScreen.route) }) {
        Text("跳转至详情页")
    }
}

3. 确认NavHostController初始化位置

rememberNavController()必须在具备生命周期的Composable层级(如Activity的setContent内部)调用,确保它能关联到Activity这个合法的SavedStateRegistryOwner。

4. 检查ViewModel依赖的注入合法性

如果NotificationCompat.Builder是通过Hilt注入的,需确保Module中提供了正确的实例:

@Module
@InstallIn(SingletonComponent::class)
object NotificationModule {
    @Provides
    fun provideNotificationManager(@ApplicationContext context: Context): NotificationManagerCompat {
        return NotificationManagerCompat.from(context)
    }

    @Provides
    fun provideNotificationBuilder(@ApplicationContext context: Context): NotificationCompat.Builder {
        return NotificationCompat.Builder(context, "YOUR_CHANNEL_ID")
            .setSmallIcon(R.drawable.ic_notification)
            .setContentTitle("默认标题")
    }
}

验证流程

完成配置后重新编译运行:

  • 确认App能正常启动进入MainScreen
  • 点击导航按钮跳转至DetailScreen,检查是否无崩溃

内容的提问来源于stack exchange,提问作者Lokmane Kerboua

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:44:52