Android中使用Hilt后无法创建ViewModel实例问题求助
解决Hilt无法创建ViewModel实例的崩溃问题
从你的代码和报错日志来看,问题核心出在ViewModel的Hilt注解使用错误,还可能遗漏了Hilt初始化的关键配置,下面一步步来修复:
1. 替换ViewModel的废弃注解
你当前使用的@ViewModelInject是Hilt旧版本的废弃注解,Hilt现在要求ViewModel必须使用@HiltViewModel注解,同时构造函数改用@Inject标记:
修改AllFilesListViewModel类:
import androidx.hilt.lifecycle.HiltViewModel // 导入正确的注解 import androidx.lifecycle.ViewModel @HiltViewModel // 替换原有的@ViewModelInject class AllFilesListViewModel @Inject constructor( // 构造函数用@Inject标记 private val pdfItemRepository: PdfItemRepository ):ViewModel() { }
2. 确保Application类添加@HiltAndroidApp注解
这是Hilt初始化的核心步骤,如果你还没给Application类添加这个注解,必须补上:
import dagger.hilt.android.HiltAndroidApp import android.app.Application @HiltAndroidApp class MyApplication : Application() { // 你的Application自定义逻辑(如果有的话) }
同时别忘了在AndroidManifest.xml里指定这个Application:
<application android:name=".MyApplication" <!-- 其他原有配置 --> > </application>
3. 检查Hilt依赖是否完整
确保Module级别的build.gradle里添加了正确的Hilt及ViewModel相关依赖(版本号可根据需求兼容更新):
// Hilt核心依赖 implementation "com.google.dagger:hilt-android:2.44" kapt "com.google.dagger:hilt-compiler:2.44" // ViewModel与Hilt整合依赖 implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03" kapt "androidx.hilt:hilt-compiler:1.0.0"
4. 清理并重新构建项目
注解处理器生成的代码可能存在缓存问题,执行Build > Clean Project,再执行Build > Rebuild Project,确保所有Hilt生成的代码都正确更新。
完成以上步骤后,Hilt就能正常创建你的ViewModel实例,崩溃问题即可解决。
内容的提问来源于stack exchange,提问作者Rajesh kumar
相关产品推荐
相关产品推荐

