匕首新Api。但是不能用单例作用域实现运行时作用域

时间:2019-02-05 04:06:11

标签: android kotlin dagger-2 dagger

我的范围:

@Scope
@Retention
annotation class ActivityScope

AppModule:

 @Module(includes = [ActivityModule::class])
class AppModule {

    @Provides
    @Singleton
    fun provideContext(application: Application): Context {
        return application
    }

    @Provides
    @Singleton
    internal fun provideDataManager(appDataManager: AppDataManager): DataManager {
        return appDataManager
    }


}

UsecaseActivityModule:

@Module
    class UsecaseActivityModule {

        @Provides
        @RegisterActivityScope
        fun provideUsecase(appDataManager: AppDataManager): UseCase =
            UseCase(appDataManager)

    }


@Module
internal abstract class ActivityModule {


    @ContributesAndroidInjector(
        modules = [
            UsecaseActivityModule::class

        ]
    )
    internal abstract fun contributeUsecaseActivity(): UsecaseActivity

}

问题是我无法提供此信息:

@Provides
        @Singleton
        fun provideContext(application: Application): Context {
            return application
        }

遇到错误

  

错误:(无作用域)可能未引用作用域绑定:@Subcomponent(

 bla bla bla ...   
     

AppComponent.java:6:错误:com.example.di.AppComponent的范围为   @Singleton可能不会引用具有不同名称的绑定   范围:   @ dagger.Component(modules = {dagger.android.AndroidInjectionModule.class,   com.example.di.ActivityModule.class,com.example.di.AppModule.class})

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我没有使用@RegisterActivityScope在父模块中指定范围。

    @Module
    internal abstract class ActivityModule {

        @RegisterActivityScope // <-- just need add this
        @ContributesAndroidInjector(
            modules = [
                UsecaseActivityModule::class

            ]
        )
        internal abstract fun contributeUsecaseActivity(): UsecaseActivity

    }