Поле не вводится с помощью Dagger - PullRequest
0 голосов
/ 29 мая 2019

В следующем коде поле 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()
    }
}

Из основной деятельности я звоню:

App.context.startService()

1 Ответ

1 голос
/ 29 мая 2019

Вы ошиблись здесь

@Singleton
@Component(modules = [(ServiceUtilModule::class)])
interface AppComponent {
    fun inject(app: Application)
}

Вы должны передать класс приложения в качестве аргумента, а не базовый.

@Singleton
@Component(modules = [(ServiceUtilModule::class)])
interface AppComponent {
    fun inject(app: App)
}
...