
我已经通过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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)