2017-05-09 62 views

回答

2

如果您的模块是一个抽象类或接口,或者它有一个公共的无参数的构造函数,你可以只需将它添加到你的模块列表中,而不需要提供一个实例,一切都可以正常工作。这意味着:

@Subcomponent(modules = {YourAbstractModule.class /*, ... */}) 
public interface YourActivitySubcomponent extends AndroidInjector<YourActivity> { 

或使用@ContributesAndroidInjector

@ContributesAndroidInjector(modules = {YourAbstractModule.class /*, ... */}) 
@YourScope 
abstract YourActivity bindYourActivityInjector(); 
+0

我得到:错误:(8,8)错误:[dagger.android.AndroidInjector.inject(T)] com.rachapps。 testapp.activity.MainActivity不能提供没有\ @Inject构造函数或从一个\ @提供注释的方法。此类型支持成员注入,但不能隐式提供。 com.rachapps.testapp.activity.MainActivity ... – wioskamala

+1

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'方法。 –

+0

感谢您的帮助! – wioskamala