При использовании @Qualifier [Dagger / MissingBinding] int [] не может быть предоставлен без аннотируемого метода @ Provides - PullRequest
1 голос
/ 14 апреля 2020

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

1 Ответ

1 голос
/ 14 апреля 2020

Квалификаторы с Kotlin на полях были исправлены / улучшены с помощью Версия Dagger 2.25 .

Убедитесь, что используется последняя версия, и она должна работать.


В качестве альтернативы вы можете использовать @field:MyQualifier, чтобы его могли поднять предыдущие версии.

...