使用HiltViewModel注入ViewModel报错,含NavHost时崩溃求助
可能的原因和对应解决步骤:
依赖缺失或版本不匹配
大概率是没加Compose Navigation与Hilt绑定的专用依赖,或是Hilt、Compose Navigation版本不兼容。
解决:在Module级build.gradle中添加hilt-navigation-compose依赖,且保证它和你的Hilt、Compose版本匹配:implementation "androidx.hilt:hilt-navigation-compose:1.0.0" // 注意版本要和Hilt核心依赖对应,比如Hilt用2.44,这里也选兼容的同系列版本同时检查
hilt-android和hilt-compiler的版本必须完全一致。构建缓存导致生成代码未更新
Hilt靠注解处理器生成代码,若缓存没清理,MainActivity对应的GeneratedComponent实现类可能没生成,就会触发该错误。
解决:执行Build菜单的Clean Project后再Rebuild Project,或者直接删除项目根目录的.gradle和build文件夹后重新构建。NavHost未正确关联Activity的Hilt组件
若NavHost不是直接放在MainActivity的setContent中,而是嵌套在未加Hilt注解的组件里,会导致hiltViewModel()找不到正确的Component Holder。
解决:确保NavHost的直接宿主是带@AndroidEntryPoint的MainActivity,嵌套场景下也要保证上层组件能传递正确的Hilt上下文。注解处理器未正确启用
即便加了依赖,也可能没在build.gradle里启用Hilt的注解处理器。
解决:检查Module级build.gradle是否配置正确:plugins { id 'com.android.application' id 'kotlin-android' id 'dagger.hilt.android.plugin' } android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } } dependencies { implementation "com.google.dagger:hilt-android:2.44" kapt "com.google.dagger:hilt-android-compiler:2.44" ... }确认
dagger.hilt.android.plugin插件已应用,且kapt依赖添加正确。
内容的提问来源于stack exchange,提问作者WinterMute

