我遇到了一个问题,我不知道如何在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 {
// ?
}