Я написал код ниже, чтобы получить 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)
}
}
Использование внутри диалогового фрагмента:
@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")
приводит к той же ошибке. Заранее спасибо.