Я столкнулся с проблемой, заключающейся в том, что я не знаю, как инициализировать моего докладчика в методе providePresenter()
с одноименной аннотацией @ProvidePresenter
.
Использование Dagger 2
Я предоставляю несколько классов в ведущий:
@InjectViewState
class GroupInfoPresenter @Inject constructor(private val groupInfoInteractor: GroupInfoInteractor,
private val compositeDisposable: CompositeDisposable,
private val schedulerProvider: SchedulerProvider) :
BasePresenter<GroupInfoView>(compositeDisposable)
Теперь, поскольку у меня нет достаточного конструктора для моего докладчика, я должен предоставить его с помощью @ProvidePresenter
аннотации,
но я не знаю как это сделать. Я не могу найти пример для приложения Dagger 2.
Вот мое дерево Ди:
AppComponent
:
@Singleton
@Component(modules = [(AndroidInjectionModule::class), (AppModule::class), (ActivityBuilder::class)])
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AppComponent
}
fun inject(app: MyApplication)
}
ActivityBuilder
@Module
abstract class ActivityBuilder {
@ContributesAndroidInjector(modules = [(GroupSearchActivityModule::class), (DataModule::class)])
abstract fun bindGroupSearchActibity(): GroupSearchActivity
AppModule
просто предоставляя некоторые планировщики и контекст.
GroupInfoActivityModule
:
@Module
class GroupInfoActivityModule {
@Provides
internal fun provideGroupInfoInteractor(groupRepository: GroupRepository, schedulerProvider: SchedulerProvider)
= GroupInfoInteractor(groupRepository, schedulerProvider)
}
Может кто-нибудь помочь мне с этой проблемой? Как правильно настроить этот метод?
@ProvidePersenter
providePresenter() : GroupInfoPresenter {
// ?
}