【发布时间】:2017-11-21 11:37:09
【问题描述】:
我正在使用 Dagger2 AndroidInjector 和 Kotlin。我有一个以这种方式定义其模块的子组件:
@Subcomponent(modules = arrayOf(
UIModule::class,
HomeActivitySubcomponent.ComponentModule::class
))
interface HomeActivitySubcomponent : AndroidInjector<HomeActivity> {
@Subcomponent.Builder
abstract class Builder : AndroidInjector.Builder<HomeActivity>()
@Module
abstract class ComponentModule {
@Binds
@IntoMap
@ActivityKey(HomeActivity::class)
internal abstract fun bindMainActivityInjectorFactory(builder: Builder): AndroidInjector.Factory<out Activity>
}
}
如果这是 java,我可以将静态 @Provides 方法添加到 ComponentModule @Module。它必须是静态的,因为如果我向使用 @Binds 的 @Module 类添加非静态方法,Dagger 会抱怨:
错误:一个@Module 不能同时包含非静态@Provides 方法和 抽象的@Binds 或@Multibinds 声明
问题是:如何使用 Kotlin 做到这一点?
【问题讨论】:
标签: android kotlin dagger-2 androidinjector