Estoy usando Dagger 2.21 y cuando trato de hacer
@Module internal abstract class FragmentModule { @ContributesAndroidInjector internal abstract fun loginFragment() : LoginFragment }y
@Singleton @Component(modules = [AndroidSupportInjectionModule::class, AppModule::class, ActivityModule::class, ViewModelBuilder::class, ViewModelModule::class, RepositoriesModule::class, ApiModule::class, FragmentModule::class]) interface AppComponent : AndroidInjector<PhotocoApplication> { @Component.Builder abstract class Builder : AndroidInjector.Builder<PhotocoApplication>() }me sale este error:
/app/build/generated/source/kapt/debug/com/photoco/app/injection/module/FragmentModule_LoginFragment$app_debug.java:18: error: tipos incompatibles: Class LoginFragment no se puede convertir a Class extends Fragment
He estado buscando y vi que usar 2.21 y configurar esto hace que funcione, pero todavía no tuve suerte
android.useAndroidX=verdadero; android.enableJetifier=verdadero
LoginFragment se extiende:
daga.android.soporte.DaggerFragment()
Con toda esta configuración no puedo hacer que se construya, ¿me estoy perdiendo algo aquí? Puedo hacer que funcione con Actividades usando DaggerActivity pero no con Fragmentos.
PhotocoApplication amplía dagger.android.support.DaggerApplication
¡Gracias!
Se solucionó este problema actualizando todas las dependencias de dagger a 2.21, faltaba la compatibilidad con Android (todavía estaba usando 2.16).
implementation 'com.google.dagger:dagger:2.21' implementation 'com.google.dagger:dagger-android:2.21' implementation 'com.google.dagger:dagger-android-support:2.21' kapt "com.google.dagger:dagger-compiler:2.21" kapt "com.google.dagger:dagger-android-processor:2.21"Acabo de tener el mismo problema, pero con dos clases que no son de Android: EventBus y una clase contenedora de recursos de Android.
Probé la solución propuesta por Emanuel Amiguinho aunque no tenía nada que ver con el soporte de Android y se arregló. Así que traté de eliminar la dependencia agregada y volví a intentarlo, y mágicamente construí con éxito nuevamente.
Así que supongo que en mi caso fue un problema de almacenamiento en caché.