您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

dagger2错误“没有@Inject构造函数或@Provides注释方法无法提供android.app.Application”

dagger2错误“没有@Inject构造函数或@Provides注释方法无法提供android.app.Application”

在您的特定情况下,您会丢失:

@Binds Application bindApplication(App app);

这很重要,因为dagger.android将自动包含对特定Application,Activity,Fragment,Service,BroadcastReceiver等子类 的绑定 但不包含对一般对象 的绑定。(您可以注入 App 而不注入 Application ,并注入 YourActivity 而不注入 Activity 。)如果要指示dagger.android使用应用程序实例应满足对Application的请求,则必须包含上述绑定。

一般而言,对于Application,Activity,Service和BroadcastReceiver而言,这是一件相当安全的事情,但对于Fragment(本机或在compat库中)而言则不是。这是因为dagger.android尊重嵌套片段,在这种情况下,要插入哪个片段将是模棱两可的。

尽管您可以通过luffy的答案中的Module和instance字段提供Application ,但这比您需要的样板好,而且优化程度也较低:Dagger将编写代码调用您的@Provides方法,而您可以声明性地告诉Dagger重用现有的代码使用@Binds或编写static @Provides避免在实例上调用调用方法进行绑定。

参见Dagger的优势@BindsAndroid静态调度的优势

其他 2022/1/1 18:25:30 有479人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶