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

Android Hilt使用报错:ViewModel无无参构造函数

Hilt注入ViewModel报错:"ViewModel has no zero argument constructor" 解决方案

问题核心

你遇到的错误本质是:Composable中使用了默认的viewModel()函数获取Hilt注解的ViewModel,该函数无法识别Hilt的依赖注入逻辑,会尝试用无参构造函数实例化ViewModel,导致报错。

解决步骤

1. 替换ViewModel获取方式

将Composable中获取ViewModel的代码,从默认的viewModel()替换为Hilt提供的hiltViewModel()函数,该函数会使用Hilt的ViewModel工厂来创建实例。

修改你的RecipeBookApp Composable:

@Composable
fun RecipeBookApp(
    navController: NavHostController = rememberNavController()
) {
    Log.d("GetRecipe", "Still in Recipe Screen About to make the call")

    // 替换为Hilt的hiltViewModel()
    val recipeViewModel: RecipeViewModel = hiltViewModel()

    var editMode by remember { mutableStateOf(false) }
    // ... 其余代码保持不变
}

2. 确保引入Hilt-Compose导航依赖

检查你的模块级build.gradle(或build.gradle.kts)是否添加了Hilt与Compose导航集成的依赖:

// 替换为对应稳定版本,如1.1.0
implementation "androidx.hilt:hilt-navigation-compose:1.1.0"

3. 验证导入包

确保hiltViewModel()的导入是正确的:

import androidx.hilt.navigation.compose.hiltViewModel

额外检查点

  • 确认RecipeViewModel已添加@HiltViewModel注解,且构造函数用@Inject标注
  • 主Activity的@AndroidEntryPoint、Application类的@HiltAndroidApp注解无误
  • 清理项目并重新构建(Build > Clean Project 然后 Build > Rebuild Project),避免缓存导致的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:35:40