Android 如果没有@Inject构造函数或@Provides注释方法,则无法提供java.lang.String

Android 如果没有@Inject构造函数或@Provides注释方法,则无法提供java.lang.String,android,dagger-2,dagger,Android,Dagger 2,Dagger,引发的错误或同时引发这两个错误: @Inject @Named("DummyString") lateinit var dummyString: String @Inject @Named("SomethingToRemember") lateinit var sthToRemember: String 但以下几点很好: @Inject @Named("MySharedPrefs") lateinit var mySha

引发的错误或同时引发这两个错误:

    @Inject
    @Named("DummyString")
    lateinit var dummyString: String

    @Inject
    @Named("SomethingToRemember")
    lateinit var sthToRemember: String
但以下几点很好:

    @Inject
    @Named("MySharedPrefs")
    lateinit var mySharedPreferences: SharedPreferences
带匕首的绳子的供应和使用有什么特别之处吗

我的模块

    @Provides
    @JvmStatic
    @Singleton
    @Named("MySharedPrefs")
    fun provideMySharedPrefs(context: Context) : SharedPreferences {
        return context.getSharedPreferences("MySharedPrefs", Context.MODE_PRIVATE)
    }

    @Provides
    @JvmStatic
    @Singleton
    @Named("DummyString")
    fun provideDummyString(): String {
        return "dummy dummy"
    }

    @Provides
    @JvmStatic
    @Singleton
    @Named("SomethingToRemember")
    fun provideSthToRemember(@Named("MySharedPrefs") sharedPreferences: SharedPreferences) : String {
        return sharedPreferences.getString("SomethingToRemember", "") ?: ""
    }
错误详细信息:

error: [Dagger/MissingBinding] java.lang.String cannot be provided without an @Inject constructor or an @Provides-annotated method.
public abstract interface FormsPreviewAppComponent extends dagger.android.AndroidInjector<com.myapp.android.MyApplication> {
                ^
      java.lang.String is injected at
          com.myapp.android.MyLinkActivity.sthToRemember
      com.myapp.android.MyActivity is injected at
          dagger.android.AndroidInjector.inject(T) [com.myapp.android.MyAppComponent → com.myapp.android.MyAppModule_Bindable_ContributesMyActivity.MyActivitySubcomponent]
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':myapp:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)
错误:[Dagger/MissingBinding]如果没有@Inject构造函数或@Provides注释方法,则无法提供java.lang.String。
公共抽象接口FormsPreviewAppComponent扩展了dagger.android.AndroidJector{
^
字符串是在
com.myapp.android.MyLinkActivity.sth记住
com.myapp.android.MyActivity在
dagger.android.androidjector.inject(T)[com.myapp.android.MyAppComponent→ com.myapp.android.MyAppModule_Bindable_ContributesMyActivity.MyActivitySubcomponent]
失败:生成失败,出现异常。
*出了什么问题:
任务“:myapp:kaptDebugKotlin”的执行失败。
>执行org.jetbrains.kotlin.gradle.internal.KaptExecution时出错
>java.lang.reflect.InvocationTargetException(无错误消息)

我需要使用
@field:Named(“DummyString”)
而不是
@Named(“DummyString”)

分享错误!添加,谢谢@anmol为什么要注射
String
?太好了。你救了我一天!