android.app.Application上没有可注入的成员。你想添加一个注射构造函数吗?由provideOkHttpClient提供

时间:2014-04-08 16:03:20

标签: android dagger

我正在尝试在以下U2020中合并repo和Dagger的示例android-activity-graphs

但是,我收到编译时错误:

Error:(32, 8) error: No injectable members on android.app.Application. Do you want to add an injectable constructor? required by provideOkHttpClient(android.app.Application) for org.kamol.nefete.ActivityModule

1 个答案:

答案 0 :(得分:4)

您尚未绑定Application,您只绑定了Context,但是在图表的其他位置,您的某些类型取决于Application。需要Application的下游依赖项将尝试隐式绑定它,因为Dagger无法知道Application可以满足需要@ForApplication Context的对象。由于Application没有@Inject构造函数或@Inject字段,因此Dagger将失败。

您只需添加

即可修复您的示例
@Provides @Singleton Application provideApplicationContext() {
  return application;
}
org.kamol.nefete.AndroidModule

中的

顺便说一句,我建议不要绑定Context因为它太抽象了超类型而且太容易与Activity Context混淆,即使你绑定了@Qualifier 1}}注释,例如@ForApplication Context。我建议改为绑定Application并让事情依赖于更具体的类型。