Hilt依赖注入无法注入ApplicationContext的MissingBinding报错如何解决
问题根因
报错是因为你在AppModule中注入@ApplicationContext时参数类型使用错误,Hilt 内置提供的@ApplicationContext限定符对应可注入的类型是android.content.Context或android.app.Application,并非你代码中使用的ApplicationContext类,导致Dagger找不到对应类型的实例提供方。
解决方案
- 首先修改
AppModule中getAppPreferences方法的参数类型:
@Module @InstallIn(SingletonComponent::class) object AppModule { // 其余方法保持不变 @Provides fun getAppPreferences( // 把参数类型从ApplicationContext改为Context @ApplicationContext context: Context, @Named("appName") appName: String ):SharedPreferences { // 不需要再强制转型,直接调用即可 return context.getSharedPreferences(appName, Context.MODE_PRIVATE) } }
- 检查必备配置项:
- 确认你的自定义Application类添加了
@HiltAndroidApp注解,示例如下:
@HiltAndroidApp class CarApp : Application() { // 应用全局逻辑 }
- 确认
@ApplicationContext的导入包正确,必须为:
import dagger.hilt.android.qualifiers.ApplicationContext
- 清理构建缓存后重新编译:执行Android Studio的
Build -> Clean Project,再执行Rebuild Project,避免kapt生成的旧缓存文件导致报错残留。
内容的提问来源于stack exchange,提问作者Abbas Khan Waliullahi
相关产品推荐
相关产品推荐

