Dagger Component.Factory не может быть предоставлена - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть Component для предоставления зависимостей для ввода данных:

@Component(modules = [DataInputModule::class])
interface DataInputComponent {
    fun inject(activity: DataInputActivity)

    fun factory(): Factory

    @Component.Factory
    interface Factory {
        fun create(@BindsInstance activity: DataInputActivity, module: DataInputModule): DataInputComponent
    }
}

С модулем:

@Module
class DataInputModule(private val activity: DataInputActivity) {
    @Provides
    fun provideDataInputViewModel(repo: MyRepository, timestampProvider: TimestampProvider) =
        DefaultDataInputViewModel(repo, timestampProvider)

    @Provides
    fun provideTimestampProvider(): TimestampProvider = DefaultTimestampProvider()

    @Provides
    fun provideDateTimeDialogFactory(): DateTimeDialogFactory = DateTimeDialogFactory(activity)
}

Компонент моего приложения выглядит так:

@Singleton
@Component(
    modules = [
        DataListModule::class
    ]
)
interface AppComponent : AndroidInjector<MyApplication> {
    @Component.Factory
    interface Factory {
        fun create(@BindsInstance app: MyApplication): AppComponent
    }
}

с модулем для обеспечения надежной базы данных Room и репозитория.

При попытке собрать я получаю следующую ошибку:

D: \ Applications \ AndroidStudioProjects \ MyApp \ app \ build \ tmp \ kapt3 \ stubs \ debug \ com \ example \ myapp \ di \ component \ DataInputComponent. java: 7: ошибка: [Dagger / MissingBinding] com.example.myapp.di.component.DataInputComponent.Factory не может быть предоставлена ​​без аннотируемого метода @ Provides. publi c абстрактный интерфейс DataInputComponent {^ com.example.myapp.di.component.DataInputComponent.Factory предоставляется по адресу com.example.myapp.di.component.DataInputComponent.factory ()

I не может добавить @Provides к @Component, потому что это не модуль. Я искал документы в Интернете, но не нашел никого, кто бы "предоставил" аннотирование и предоставление @Factory. Так, что могло вызвать проблему здесь?

...