Кинжал новый Api.Но не могу реализовать область выполнения с одноэлементной областью - PullRequest
0 голосов
/ 05 февраля 2019

Моя область действия:

@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 голосов
/ 05 февраля 2019

Я не указал область в родительском модуле с @ RegisterActivityScope.

    @Module
    internal abstract class ActivityModule {

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

            ]
        )
        internal abstract fun contributeUsecaseActivity(): UsecaseActivity

    }
...