Как мне предоставить ProvisionPresenter с Moxy и Dagger 2? - PullRequest
0 голосов
/ 03 ноября 2018

Я столкнулся с проблемой, заключающейся в том, что я не знаю, как инициализировать моего докладчика в методе 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 {
// ?
}
...