android - 无法提供 Dagger Component.Factory
问题描述
我必须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 注释的方法的情况下提供。公共抽象接口 DataInputComponent { ^ com.example.myapp.di.component.DataInputComponent.Factory 在 com.example.myapp.di.component.DataInputComponent.factory() 提供
我无法添加 a @Provides
,@Component
因为它不是模块。我在网上查找了文档,但没有发现任何人“提供”注释和提供@Factory
. 那么什么可能导致这里的问题呢?
解决方案
推荐阅读
- ios - 删除并重新安装 iOS 应用程序后网络缓存是否保留
- intellij-idea - IntelliJ IDEA 更漂亮的插件不应用给定的配置
- java - 如何解决“加载类 com.amazonaws.lambda.demo.LambdaFunctionHandler: javax/mail/MessagingException 时出错”?
- c# - 如何从头开始实现异步 I/O 绑定操作?
- java - jar 与 jmeter 集成
- javascript - 我应该将状态初始化代码放在 Vuex 的哪里?
- javascript - 如果使用 jQuery 缺少输入文本,则使滑动面板无响应
- javascript - 使用 domparser 围绕代码块创建一个新的 div 容器
- reactjs - 如何将带有上下文子项的信息传递给父项
- android - 滑动布局后没有获取新输入的数据