未使用的@Binds方法与Dagger

时间:2017-11-22 12:03:35

标签: android dagger-2 androidinjector

我对Splash屏幕活动有以下定义:

@Subcomponent(modules = arrayOf(
        SplashActivitySubcomponent.ComponentModule::class)
)
interface SplashActivitySubcomponent : AndroidInjector<SplashActivity> {
    @Subcomponent.Builder
    abstract class Builder : AndroidInjector.Builder<SplashActivity>()

    @Module
    abstract class ComponentModule {
        @Binds
        @IntoMap
        @ActivityKey(SplashActivity::class)
        abstract fun bindSplashActivityInjectorFactory(builder: SplashActivitySubcomponent.Builder): AndroidInjector.Factory<out Activity>
    }
}

我在Activity中没有片段。会发生什么是bindSplashActivityInjectorFactory未使用。问题是我无法摆脱它,否则应用程序会在运行时崩溃。

使用

@Suppress("unused")

还不够,因为我仍然收到来自kotlin-lint的警告。 为什么我不需要在不使用时定义此方法?我该怎么做才能避免警告?

这是我得到的错误:

  

不必要的抽象类 - [ComponentModule] at   COM / XXXX /防溅/二/ SplashActivitySubcomponent.kt:20:5

     

OptionalAbstractKeyword - [bindSplashActivityInjectorFactory] ​​at   COM / XXXX /防溅/二/ SplashActivitySubcomponent.kt:22:9

1 个答案:

答案 0 :(得分:0)

现在我解决了这个问题:

@Subcomponent(modules = arrayOf(SplashActivitySubcomponent.ComponentModule::class))
interface SplashActivitySubcomponent : AndroidInjector<SplashActivity> {
    @Subcomponent.Builder
    abstract class Builder : AndroidInjector.Builder<SplashActivity>()

    @Module
    @Suppress("UnnecessaryAbstractClass", "OptionalAbstractKeyword")
    abstract class ComponentModule {
        @Suppress("unused")
        @Binds
        @IntoMap
        @ActivityKey(SplashActivity::class)
        abstract fun bindSplashActivityInjectorFactory(builder: SplashActivitySubcomponent.Builder): AndroidInjector.Factory<out Activity>
    }
}

所以我刚补充说:

@Suppress("UnnecessaryAbstractClass", "OptionalAbstractKeyword")