如何为Presenter提供Moxy和Dagger 2?

时间:2018-11-03 18:32:32

标签: kotlin dagger-2 moxy android-moxy

我遇到了一个问题,我不知道如何在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 approuch的示例。

这是我的迪树:

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 {
// ?
}

0 个答案:

没有答案