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)
}