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

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

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静态调度的优势。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5623317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存