![]() |
新品価格 |
![]()
@Subcomponentを使ってActivityにDaggerでInjectする
の続編
次は@ContributesAndroidInjectorを使ってみる
・サブコンポーネントにする
AppComponent.kt
@Component(
modules = [
AndroidInjectionModule::class,
ActivityBindingModule::class
]
)
interface AppComponent {
@Singleton
fun inject(app: MyApplication)
}
AppModule.kt
@Module
class AppModule {
@Provides
@Singleton
fun provideMasterka(): Masterka {
return Masterka()
}
}
ActivityBindingModule.kt
@Module
interface ActivityBindingModule {
@Singleton
@ActivityScope
@ContributesAndroidInjector(modules = [AppModule::class])
fun contributeMainActivityInjector(): MainActivity
}
・全体で使えるようにする
AppComponent.kt
@Singleton
@Component(
modules = [
AndroidInjectionModule::class,
AppModule::class,
ActivityBindingModule::class
]
)
interface AppComponent {
fun inject(app: MyApplication)
}
ActivityBindingModule.kt
@Module
interface ActivityBindingModule {
@ActivityScope
@ContributesAndroidInjector
fun contributeMainActivityInjector(): MainActivity
}
全体で使えるようにするのか、しないのかで書き方変わりますが
@Subcomponentを使うよりは圧倒的にタイプ量減るので
Androidなら@ContributesAndroidInjector使う方が良いかなと思いました
まだまだDaggerの実験は続くよ
