У меня есть 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
. Так, что могло вызвать проблему здесь?