Dagger 2 androidx片段不兼容类型

时间:2019-01-30 18:57:28

标签: android kotlin dependency-injection dagger-2 androidx

我正在使用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

谢谢!

2 个答案:

答案 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无关,也已修复。因此,我尝试删除添加的依赖项并重试,然后再次神奇地成功构建。

所以我想这是一个缓存问题。