相关疑难解决方法(0)

Dagger 2与Kotlin的多重绑定

我的匕首2模块中有以下片段

@Singleton
@Provides
@ElementsIntoSet
fun providesQueries(foo: Foo): Set<Foo>{
    val queries = LinkedHashSet<Foo>()
    queries.add(foo)
    return queries
}
Run Code Online (Sandbox Code Playgroud)

我试着以这种方式注入

@Inject lateinit var foo: Set<Foo>
Run Code Online (Sandbox Code Playgroud)

但是匕首显示一个错误,表示Dagger无法在没有@Provides或@Produces方法的情况下提供java.util.Set.

我在java中也做了同样的工作.有人知道为什么会失败吗?

android kotlin dagger-2

30
推荐指数
1
解决办法
3358
查看次数

kotlin + Dagger2:如果没有@ Provide-annotated方法,则无法提供

我不明白为什么我会收到此错误:

Error:(12, 2) error: [dagger.android.AndroidInjector.inject(T)] java.util.Map<java.lang.Class<? extends android.arch.lifecycle.ViewModel>,? extends javax.inject.Provider<android.arch.lifecycle.ViewModel>> cannot be provided without an @Provides-annotated method.
public abstract interface ApplicationComponent {
                ^
      java.util.Map<java.lang.Class<? extends android.arch.lifecycle.ViewModel>,? extends javax.inject.Provider<android.arch.lifecycle.ViewModel>> is injected at
          com.chintansoni.android.architecturecomponentsblueprint.viewmodel.KotlinViewModelFactory.<init>(creators)
      com.chintansoni.android.architecturecomponentsblueprint.viewmodel.KotlinViewModelFactory is injected at
          com.chintansoni.android.architecturecomponentsblueprint.view.activity.SplashActivity.viewModelFactory
      com.chintansoni.android.architecturecomponentsblueprint.view.activity.SplashActivity is injected at
          dagger.android.AndroidInjector.inject(arg0)
Run Code Online (Sandbox Code Playgroud)

KotlinApplication.kt

class KotlinApplication : Application(), HasActivityInjector {

    @Inject
    lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Activity>

    override fun onCreate() {
        super.onCreate()
        initializeLogger()
        initializeAppInjector()
    }

    private fun initializeAppInjector() {
        AppInjector.init(this)
    }

    private fun initializeLogger() {
        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }
    }

    override fun …
Run Code Online (Sandbox Code Playgroud)

android kotlin dagger-2

17
推荐指数
2
解决办法
3899
查看次数

标签 统计

android ×2

dagger-2 ×2

kotlin ×2