Внедрить объект, созданный системой
Я пытаюсь @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)