我已经编写了下面的代码来获得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")
限定词会产生相同的错误。预先感谢。
[在Kotlin的资格赛已通过Dagger version 2.25进行了固定/改进。
请确保使用最新版本,并且应该可以使用。
或者,您可以使用@field:MyQualifier
,以便早期版本可以使用它。