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

Kotlin+Hilt环境下HomeViewModel无法实例化的RuntimeException问题

解决Hilt无法创建HomeViewModel实例的问题

可能的原因及修复方案

1. 检查Application类是否添加@HiltAndroidApp注解

Hilt必须通过Application类初始化注入框架,若未添加该注解,Hilt无法生成必要的注入代码。

示例代码:

@HiltAndroidApp
class MyApp : Application() {
    // 自定义逻辑
}

同时需在AndroidManifest.xml中指定该Application:

<application
    android:name=".MyApp"
    <!-- 其他配置项 -->
>

2. 确认GetTrendingMoviesUseCase的注入有效性

GetTrendingMoviesUseCase已使用@Inject constructor,但需确保它处于Hilt默认扫描范围内(@HiltAndroidApp所在包或子包)。若不在该范围,需在Hilt模块中手动绑定,或调整包结构。

3. 检查MovieRepository的绑定配置

GetTrendingMoviesUseCase依赖MovieRepository,如果MovieRepository是接口,必须在Hilt模块中提供具体实现的绑定:

@Module
@InstallIn(SingletonComponent::class)
object RepositoryModule {
    @Provides
    fun provideMovieRepository(apiService: ApiService): MovieRepository {
        return MovieRepositoryImpl(apiService)
    }
}

如果是具体类,需确保它有@Inject constructor注解,或在模块中被提供。

4. 检查MovieItemDecider的注入配置

MovieResponseDtoToDomain依赖MovieItemDecider,需确保该类已被Hilt管理:

  • 若为具体类,添加@Inject constructor:
class MovieItemDecider @Inject constructor() {
    // 方法实现
}
  • 若为接口,需在Hilt模块中绑定具体实现类。

5. 验证Gradle配置是否正确

确保项目已添加完整的Hilt依赖:

项目级build.gradle:

plugins {
    id 'com.google.dagger.hilt.android' version '2.48' apply false
}

模块级build.gradle:

plugins {
    id 'kotlin-kapt'
    id 'com.google.dagger.hilt.android'
}

dependencies {
    implementation 'com.google.dagger:hilt-android:2.48'
    kapt 'com.google.dagger:hilt-compiler:2.48'
    implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
    kapt 'androidx.hilt:hilt-compiler:1.0.0'
}

kapt {
    correctErrorTypes true
}

注意保持版本一致,避免依赖冲突。

6. 清理重建项目

Hilt注解处理器生成的代码可能存在缓存问题,执行Clean Project后再Rebuild Project,可解决部分编译时注入异常。

总结

最可能的问题是依赖链中的某个类(如MovieRepository、MovieItemDecider)未被Hilt正确绑定,或Application类缺失@HiltAndroidApp注解。按上述步骤逐一排查即可解决ViewModel实例创建失败的问题。

内容的提问来源于stack exchange,提问作者İbrahim Uyar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:15:36