Почему я получаю java .lang.Boolean не может быть предоставлен без аннотируемого метода @ Provides. когда я на самом деле предоставил это? - PullRequest
0 голосов
/ 15 апреля 2020

Вот модуль, который включает в себя еще один модуль FeatureXModule

interface FragmentModule {
@FragmentScope
@ContributesAndroidInjector(
    modules = {
             FeatureXModule.class
    })

  @Binds
  @Group
  @IntoSet
  IntentGroup bindDefaultGroup(DefaulGroup group);

 @Binds
 @Group
 @IntoSet
 IntentGroup bindGroup(Group group);

}

, где класс группы выглядит следующим образом

class Group{

@Inject
public Group(@IsEnabled boolean isEnabled) {}
 }

, а вот следующий модуль, от которого зависит первый модуль

interface FeatureXModule {
@Provides
@IsEnabled
static boolean provideXEanbled() {
    return true;// TODO: change it
}
}

Когда я строю это, я получаю .IsEnabled java .lang.Boolean не может быть предоставлен без аннотируемого метода @ Provides.

, и интересно, когда я перемещаю bind методы для второго модуля, который создает приложение Что здесь не так?

1 Ответ

0 голосов
/ 15 апреля 2020

Составлены ли модули? Другими словами, знает ли один модуль о привязках другого?

Способ сделать это - использовать @Includes:

@Module(includes = {FeatureModule.class})
interface FeatureXModule {

см. этот вопрос для более подробной информации.

В качестве альтернативы, Компонент может иметь привязки из нескольких модулей:

@Component(modules={Module1.class, Module2.class})
...