2017-05-09 66 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