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

使用Hilt+Compose开发跳转页面时Cannot create an instance of ViewModel报错如何解决

报错解决方案

核心原因

你使用的Jetpack Compose默认viewModel()方法不支持Hilt注入的@HiltViewModel注解类,导致Hilt无法完成ViewModel实例的创建,触发报错。

修复步骤

1. 添加Hilt Navigation Compose依赖

在模块级build.gradle的dependencies块中添加如下依赖,版本需和你项目的Hilt版本保持一致:

dependencies {
    // 可根据你的Hilt版本替换适配的版本号,当前示例为1.2.0稳定版
    implementation "androidx.hilt:hilt-navigation-compose:1.2.0"
}

2. 替换ViewModel获取方式

修改BookListScreen中ViewModel的获取方法,将默认的viewModel()替换为Hilt提供的hiltViewModel(),修改后代码如下:

// 注意先导包:import androidx.hilt.navigation.compose.hiltViewModel
@Composable
fun BookListScreen(
    navController: NavController,
    bookListViewModel: BookListViewModel = hiltViewModel()
) {
    // 原有逻辑保持不变
}

3. 可选校验项(排查遗漏配置)

  • 确认你的项目自定义Application类添加了@HiltAndroidApp注解,该注解是Hilt初始化的必要配置,仅给Activity加@AndroidEntryPoint无法完成Hilt的全局注入
  • 确认BookRepository、LotrApi的依赖配置和你贴出的代码一致,无拼写错误
  • 确认BookListViewModel的@HiltViewModel注解、构造函数的@Inject注解无遗漏,你当前提供的代码中这部分配置正确

内容的提问来源于stack exchange,提问作者Hasan Altay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:45:07