使用@Qualifier时,如果没有@Provides批注的方法,则无法提供[Dagger / MissingBinding] int []

问题描述 投票:1回答:1

我已经编写了下面的代码来获得IntArray,当我不使用@Qualifer对其进行批注时,它可以很好地工作,但是当我这样做时,我会收到以下错误消息:

我的模块文件(注释和模块都在同一个文件中]

@Qualifier
@MustBeDocumented
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FIELD)
annotation class ItemColorArray

@Module
class ModuleGeneral {
    @Provides
    @ItemColorArray
    fun provideItemColorArray(context: Context): IntArray {
        return context.resources.getIntArray(R.array.timetableItems)
    }
}

dialogFragment中的用法:

@Inject
@ItemColorArray
lateinit var itemColorArray: IntArray

错误消息:

{fileAddress}\di\AppComponent.java:8: error: [Dagger/MissingBinding] int[] cannot be provided without an @Provides-annotated method.
public abstract interface AppComponent {
                ^
      int[] is injected at
          {packageName}.ui.dialogs.addSubject.AddSubjectDialog.itemColorArray

同样,当我不使用任何@Qualifier时,一切正常。使用@Named("xxx")限定词会产生相同的错误。预先感谢。

android dagger-2
1个回答
1
投票

[在Kotlin的资格赛已通过Dagger version 2.25进行了固定/改进。

请确保使用最新版本,并且应该可以使用。


或者,您可以使用@field:MyQualifier,以便早期版本可以使用它。

© www.soinside.com 2019 - 2024. All rights reserved.