Field 没有被注入 Dagger
Field not being injected with Dagger
在下面的代码中,字段 serviceUtil 没有被 Dagger 注入:
AppController.kt
class App : Application() {
@Inject
lateinit var serviceUtil: ServiceUtil
init {
DaggerAppComponent
.builder()
.build()
.inject(this)
}
override fun onCreate() {
super.onCreate()
context = this
}
fun startService() {
serviceUtil.startService()
}
companion object {
lateinit var context: App
}
}
AppComponent.kt
@Singleton
@Component(modules = [(ServiceUtilModule::class)])
interface AppComponent {
fun inject(app: Application)
}
ServiceUtilModule.kt
@Module
class ServiceUtilModule {
@Provides
fun provideServiceUtil() : ServiceUtil {
return ServiceUtil()
}
}
从我的主 activity 我呼叫:
App.context.startService()
你在这里输入错误
@Singleton
@Component(modules = [(ServiceUtilModule::class)])
interface AppComponent {
fun inject(app: Application)
}
您应该将 App class 作为参数传递给您,而不是基本参数。
@Singleton
@Component(modules = [(ServiceUtilModule::class)])
interface AppComponent {
fun inject(app: App)
}
在下面的代码中,字段 serviceUtil 没有被 Dagger 注入:
AppController.kt
class App : Application() {
@Inject
lateinit var serviceUtil: ServiceUtil
init {
DaggerAppComponent
.builder()
.build()
.inject(this)
}
override fun onCreate() {
super.onCreate()
context = this
}
fun startService() {
serviceUtil.startService()
}
companion object {
lateinit var context: App
}
}
AppComponent.kt
@Singleton
@Component(modules = [(ServiceUtilModule::class)])
interface AppComponent {
fun inject(app: Application)
}
ServiceUtilModule.kt
@Module
class ServiceUtilModule {
@Provides
fun provideServiceUtil() : ServiceUtil {
return ServiceUtil()
}
}
从我的主 activity 我呼叫:
App.context.startService()
你在这里输入错误
@Singleton
@Component(modules = [(ServiceUtilModule::class)])
interface AppComponent {
fun inject(app: Application)
}
您应该将 App class 作为参数传递给您,而不是基本参数。
@Singleton
@Component(modules = [(ServiceUtilModule::class)])
interface AppComponent {
fun inject(app: App)
}