我将重点讨论注入Context,但我的问题适用于任何依赖关系,如存储库或服务类。
我有一个目的如下:
object MyObject {
lateinit var appContext: Context
doWhatever(appContext: Context){ => This is where I need context
}
fun myMethod() {
val baseClass = BaseClass()
doWhatever(appContext)
}
}
我已经知道Hilt不能注入到对象中,但是它可以注入到类中,所以我正在尝试下一种方法。
object MyObject : ProviderClass() {
doWhatever(appContext: Context){
}
fun myMethod() {
val baseClass = BaseClass()
doWhatever(appContext)
}
}
abstract class ProviderClass {
@Inject
lateinit var appContext: Context
}
如您所见,我尝试将字段注入ProviderClass并通过继承使字段可用,但也失败了,原因是**“lateinit var appContext尚未初始化”**。
这就是我提供依赖项的地方:
@Module
@InstallIn(SingletonComponent::class)
object Dependencies {
@Singleton
@Provides
fun provideContext(@ApplicationContext appContext: Context): Context {
return appContext
}
}
出了什么问题?我怎样才能把依赖注入到一个对象中呢?
1条答案
按热度按时间gblwokeq1#
无法将依赖项注入到Object中
那么你可以像这样访问,但是为此你需要上下文,这对于不支持HILT直接注入注入的地方,但是你可以访问上下文