Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果没有@Inject构造函数或@Provides-或@products注释方法,则无法提供获取。关于kotlin dagger2_Android_Kotlin_Dagger 2_Dagger - Fatal编程技术网

Android 如果没有@Inject构造函数或@Provides-或@products注释方法,则无法提供获取。关于kotlin dagger2

Android 如果没有@Inject构造函数或@Provides-或@products注释方法,则无法提供获取。关于kotlin dagger2,android,kotlin,dagger-2,dagger,Android,Kotlin,Dagger 2,Dagger,已尝试命名字段,但仍无法解决此问题。在Dagger中,提供对象有两种方法 在构造中使用@Inject 例如: UserRepository@Inject构造函数(私有val mContext:Context) 但我们如何@injectconstructor和第三方类(比如翻新服务接口)一起使用呢?这就是为什么Dagger有@Provide 例如: @Module类AppModule{ @提供 fun ProviderContext(应用程序:应用程序):Context=application.a

已尝试命名字段,但仍无法解决此问题。

在Dagger中,提供对象有两种方法

  • 在构造中使用@Inject
  • 例如:

    UserRepository@Inject构造函数(私有val mContext:Context)

  • 但我们如何@injectconstructor和第三方类(比如翻新服务接口)一起使用呢?这就是为什么Dagger有@Provide
  • 例如:

    @Module类AppModule{
    @提供
    fun ProviderContext(应用程序:应用程序):Context=application.applicationContext}

    匕首也有一些其他的方式来提供一个对象

    你可以读更多

    在您的情况下,您可以像AppModule一样在应用程序模块中提供StringPreference类

    @模块
    类AppModule{
    @提供
    fun ProviderDistringPreference(上下文:上下文):StringPreference=StringPreference(上下文)
    }

    通过此处的解决方案修复

    注入时我没有使用@fields:qualifier\u name


    谢谢

    显示您的模块和app.sareing.core.sharedPrefs.StringPreference类。
    error: app.sareing.core.sharedPrefs.StringPreference cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method.
    public abstract void inject(@org.jetbrains.annotations.NotNull()
                         ^
      app.sareing.core.sharedPrefs.StringPreference is injected at
          app.sareing.activity.MainActivity.authToken
      app.sareing.activity.MainActivity is injected at
          app.sareing.injection.component.ActivityComponent.inject(activity)