为什么没有@Provides注释的方法无法提供java.lang.Boolean的原因。我什么时候提供的?

时间:2020-04-14 22:38:02

标签: android dagger-2 dagger

这里是包含另一个模块FeatureXModule

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

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

 @Binds
 @Group
 @IntoSet
 IntentGroup bindGroup(Group 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 :(得分:0)

模块是否组成?换句话说,一个模块是否知道另一个模块的绑定?

执行此操作的方法是使用@Includes

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

有关更多详细信息,请参见this question

或者,一个组件可以具有来自多个模块的绑定:

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