0
我正在做什么Jeff Bowman在Dagger 2.10 Android subcomponents and builders描述,它工作得很好。 现在我想添加抽象模块只有@Binds 我该怎么做?匕首2.10添加抽象模块
之后我重写seedInstance我的活动是不是抽象的模块中可见,所以我也许应该添加什么东西seedInstance
我正在做什么Jeff Bowman在Dagger 2.10 Android subcomponents and builders描述,它工作得很好。 现在我想添加抽象模块只有@Binds 我该怎么做?匕首2.10添加抽象模块
之后我重写seedInstance我的活动是不是抽象的模块中可见,所以我也许应该添加什么东西seedInstance
如果您的模块是一个抽象类或接口,或者它有一个公共的无参数的构造函数,你可以只需将它添加到你的模块列表中,而不需要提供一个实例,一切都可以正常工作。这意味着:
@Subcomponent(modules = {YourAbstractModule.class /*, ... */})
public interface YourActivitySubcomponent extends AndroidInjector<YourActivity> {
或使用@ContributesAndroidInjector:
@ContributesAndroidInjector(modules = {YourAbstractModule.class /*, ... */})
@YourScope
abstract YourActivity bindYourActivityInjector();
我得到:错误:(8,8)错误:[dagger.android.AndroidInjector.inject(T)] com.rachapps。 testapp.activity.MainActivity不能提供没有\ @Inject构造函数或从一个\ @提供注释的方法。此类型支持成员注入,但不能隐式提供。 com.rachapps.testapp.activity.MainActivity ... – wioskamala
By [overriding'seedInstance'](https://github.com/RadoslawChmielewski/TempRep/blob/master/app/src/main/java/com/rachapps/ testapp/activity/MainSubComponent.java#L20),Dagger不再将它计为'@ BindsInstance',所以MainActivity不能被注入到图中。你会得到这个消息,因为你在MainModule中的绑定看起来像Dagger,就像你可能会问它为你创建一个MainActivity一样,它不能这样做。你需要通过一个模块使其可用,或者定义一个不同的'@BindsInterface abstract'方法。 –
感谢您的帮助! – wioskamala