我正在使用Dagger 2.21,而当我尝试这样做
@Module
internal abstract class FragmentModule {
@ContributesAndroidInjector
internal abstract fun loginFragment() : LoginFragment
}
和
@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>()
}
我收到此错误:
/ app / build /生成/源/kapt/debug/com/photoco/app/injection/module/FragmentModule_LoginFragment$app_debug.java:18:错误:不兼容的类型:类LoginFragment无法转换为扩展类的片段>
我一直在搜索,发现使用2.21并将其设置为可以运行,但还没有运气
android.useAndroidX = true; android.enableJetifier = true
LoginFragment扩展:
dagger.android.support.DaggerFragment()
所有这些设置无法构建,我在这里缺少什么吗?我可以使用DaggerActivity使其与Activity一起使用,但不能与Fragments一起使用。
PhotocoApplication扩展了dagger.android.support.DaggerApplication
谢谢!
答案 0 :(得分:8)
通过将所有匕首依赖项更新为2.21来解决此问题,缺少android支持(仍在使用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"
答案 1 :(得分:0)
我只是遇到了同样的问题,但是有两个非Android类:EventBus和围绕Android资源的包装器类。
我尝试了Emanuel Amiguinho提出的解决方案,即使该解决方案与android-support无关,也已修复。因此,我尝试删除添加的依赖项并重试,然后再次神奇地成功构建。
所以我想这是一个缓存问题。