2017-05-09 5 views

Antwort

2

seedInstance Wenn Sie Ihr Modul eine abstrakte Klasse oder Schnittstelle ist, oder hat es einen öffentlichen parameterlosen Konstruktor, können Sie Fügen Sie es einfach zu Ihrer Modulliste hinzu, ohne eine Instanz zu liefern, und alles sollte gut funktionieren. Das bedeutet:

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

oder mit @ContributesAndroidInjector:

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

Ich erhalte: Fehler: (8, 8) Fehler: [dagger.android.AndroidInjector.inject (T)] com.rachapps. testapp.activity.MainActivity kann nicht ohne einen \ @Inject-Konstruktor oder von einer \ @ Provide-annotierten Methode bereitgestellt werden. Dieser Typ unterstützt die Injektion von Elementen, kann jedoch nicht implizit bereitgestellt werden. com.rachapps.testapp.activity.MainActivity ... – wioskamala

+1

Durch [überschreiben 'seedInstance'] (https://github.com/RadoslawChmielewski/TempRep/blob/master/app/src/main/java/com/rachapps/ testapp/activity/MainSubComponent.java # L20), zählt Dolch nicht mehr als '@BindsInstance', daher ist MainActivity nicht verfügbar, um in Ihr Diagramm eingefügt zu werden. Du bekommst diese Nachricht, weil deine Bindung in MainModule nach Dagger aussieht, als würdest du sie bitten, eine MainActivity für dich zu erstellen, was sie nicht tun kann. Sie müssen es über ein Modul verfügbar machen, oder indem Sie eine andere @BindsInterface-Abstraktionsmethode definieren. –

+0

Danke für Ihre Hilfe! – wioskamala