新品価格 |
@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の実験は続くよ