Hilt多模块架构中无法创建HomeViewModel实例的问题咨询
问题解决:Hilt多模块下无法创建HomeViewModel实例
必须给HomeFragment添加
@AndroidEntryPoint注解
Hilt需要通过@AndroidEntryPoint标记Activity、Fragment等Android组件,才能为其内部的依赖(包括ViewModel)提供注入能力。如果Fragment没有添加该注解,Hilt无法介入ViewModel的创建流程,自然无法实例化带有@HiltViewModel的HomeViewModel,就会抛出java.lang.RuntimeException: Cannot create an instance of class HomeViewModel异常。修改后的HomeFragment代码:
@AndroidEntryPoint class HomeFragment: Fragment() { private val viewModel: HomeViewModel by viewModels() ... }
- 额外检查点:
- 确保你的Application类已添加
@HiltAndroidApp注解,这是Hilt的全局入口,所有注入操作都依赖它:@HiltAndroidApp class MyApp : Application() - 确认featureHome模块的build.gradle已引入正确的Hilt依赖(版本需与app模块保持一致):
implementation "com.google.dagger:hilt-android:2.48" kapt "com.google.dagger:hilt-android-compiler:2.48" - 检查HomeViewModel的注解和继承是否正确,确保导入的是
androidx.lifecycle.ViewModel类:@HiltViewModel class HomeViewModel @Inject constructor() : ViewModel() { .... }
- 确保你的Application类已添加
内容的提问来源于stack exchange,提问作者Biscuit
相关产品推荐
相关产品推荐

