Внедрить объект, созданный системой

Я пытаюсь @Inject экземпляр презентатора в объект контроллера (Conductor lib). Я не могу передать презентатора в качестве параметра, потому что мой контроллер создан системой. Вот так:

@Module
class FormModule {

    @Provides
    internal fun provideFormInteractor(interactor: FormInteractorImp): FormBaseInteractor = interactor

    @Provides
    internal fun provideFormPresenter(presenter: FormPresenterImp<FormBaseView, FormBaseInteractor>)
            : FormBasePresenter<FormBaseView, FormBaseInteractor> = presenter

}

@Singleton
@Component(modules = [FormModule::class, RepositoryModule::class, AppModule::class])
interface FormProvider : AndroidInjector<FormController> {

    override fun inject(fragmentController: FormController)

    @Component.Builder
    abstract class Builder : AndroidInjector.Builder<FormController>()
}

В моем onCreate()on FormController Я делаю свой подарок таким образом

@Inject
    internal lateinit var presenter: FormBasePresenter<FormBaseView, FormBaseInteractor>

 init {
        DaggerFormProvider.builder().build().inject(this)
    }

Когда я запускаю этот код, я получаю это сообщение:

java.lang.IllegalStateException: org.secfirst.umbrella.feature.form.view.FormController must be set
        at org.secfirst.umbrella.feature.form.DaggerFormProvider$Builder.build(DaggerFormProvider.java:102)
        at org.secfirst.umbrella.feature.form.DaggerFormProvider$Builder.build(DaggerFormProvider.java:81)
        at org.secfirst.umbrella.feature.form.view.FormController.<init>(FormController.kt:22)

0 ответов

Другие вопросы по тегам