@ Proporciona methods en SubComponent con AndoridInjector y Kotlin

Estoy usando el Dagger2 AndroidInjector y Kotlin. Tengo un subcomponente con su module definido de esta manera:

@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> } } 

Si esto fuera Java, podría agregar un método @Provides estático al ComponentModule @Module. Tiene que ser estático porque Dagger se queja si agrego un método no estático a una class @Module que usa @Binds:

Error: un @Module no puede contener methods @Provides no estáticos y declaraciones @Binds o @Multibinds abstractos

El problema es: ¿cómo puedo hacer esto con Kotlin?

Terminé con esto:

 @Subcomponent(modules = arrayOf( UIModule::class, HomeActivitySubcomponent.ComponentModuleForProviders::class, HomeActivitySubcomponent.ComponentModule::class )) interface HomeActivitySubcomponent : AndroidInjector<HomeActivity> { @Subcomponent.Builder abstract class Builder : AndroidInjector.Builder<HomeActivity>() @Module abstract class ComponentModule { @Suppress("unused") @Binds @IntoMap @ActivityKey(HomeActivity::class) internal abstract fun bindMainActivityInjectorFactory(builder: Builder): AndroidInjector.Factory<out Activity> } @Module open class ComponentModuleForProviders { @Provides open fun provideDrawerPresenter(): DrawerPresenter {...} } } 

Así que utilizo una segunda class @Module para los methods @Provides: ComponentModuleForProviders .

  • La instancia de fragment se conserva pero el fragment hijo no se vuelve a adjuntar
  • ClassNotFoundException en el proyecto de Android solo en mi PC
  • Configuración jvmArgs para informes Allure
  • ¿Cómo crear un intervalo infinito observable que emitirá un nuevo object cada intervalo de time?
  • KotlinJS: ¿Cuándo usaría el tipo dynamic Kotlin?
  • Cómo eliminar el desenfoque de la vista raíz en android
  • Errores de compilation con el nuevo kotlin 1.1, parameters de data binding kapt cant parse
  • Cargue la configuration xml del muelle de forma dinámica
  • ¿Cómo establecer una preference de valor en Kotlin?
  • Kotlin Javascript -library-files argumento no válido
  • Llamar a un RxJava Single In Kotlin Lambda