栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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的优势

@Binds
和Android静态调度的优势。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/617229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号