如果没有@Provides注释的方法,则无法提供Dagger AndroidInjector

如果没有@Provides注释的方法,则无法提供Dagger AndroidInjector,第1张

概述我已经通过MVP模式完成了Android项目MainActivity.所以在我的MainPresenter中,我想注入一个动态String,然后将其填充到TextView中,例如:classMyMainPresenter@Injectconstructor(@StringForTextViewdynamicString:String)而StringForTextView注释限定符定义为:importj

我已经通过MVP模式完成了Android项目MainActivity.所以在我的MainPresenter中,我想注入一个动态String,然后将其填充到TextVIEw中,例如:

class MyMainPresenter @Inject constructor(@StringForTextVIEw dynamicString : String ) 

而StringForTextVIEw注释限定符定义为:

import javax.inject.QualifIEr@QualifIEr@MustBedocumented@Retention(AnnotationRetention.RUNTIME)annotation class StringForTextVIEw

然后我还有我的界面:

interface DynamicString {    @NonNull fun getDynamicString() : String}

实现为:

data class SimpleDynamicString(val dynString: String) : DynamicString {    overrIDe fun getDynamicString(): String { return dynString }}

然后在我的模块中:

@ProvIDes@StringForTextVIEwstatic DynamicString provIDeDynamicString(Application application){    return new SimpleDynamicString(application.getString(R.string.example_string));}

问题是,我得到一个错误

Error:(51, 2) error: [dagger.androID.AndroIDInjector.inject(T)]
@com.ralf.example.injection.qualifIErs.StringForTextVIEw
java.lang.String cannot be provIDed without an @ProvIDes-annotated
method.

我想念什么?

解决方法:

您在期望构造函数中有常规String的同时提供了DynamicString.您也应该在此处使用DynamicString:

class MyMainPresenter @Inject constructor(    @StringForTextVIEw dynamicString: DynamicString)

另外,您可能希望通过将其设为val来保持该注入值.

总结

以上是内存溢出为你收集整理的如果没有@Provides注释的方法,则无法提供Dagger AndroidInjector全部内容,希望文章能够帮你解决如果没有@Provides注释的方法,则无法提供Dagger AndroidInjector所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址:https://www.54852.com/web/1093090.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存