Dolch mit Android: Wie injiziere ich den Kontext bei der Verwendung von MVP?

8

Bei der Entwicklung einer Android-Anwendung bin ich auf ein Problem gestoßen. Ich habe gerade begonnen, Dolch zu benutzen, also kenne ich einige grundlegende Konzepte, aber wenn ich es außerhalb der Bereiche von Tutorials und ihren Anwendungsfällen verwende, werden die Dinge weniger klar.

Um auf den Punkt zu kommen. In meiner Anwendung verwende ich MVP wie in diesem Blogpost beschrieben: Ссылка

Also habe ich zuerst die Interactor-Klasse (diejenige, die die Daten verarbeitet) in die Presenter-Klasse injiziert und alles war in Ordnung. Aber dann habe ich Methoden implementiert, die die SQLite-Datenbank verwenden. Daher musste Context nun in meiner Interactor-Klasse verwendet werden.

Ich kann nicht herausfinden, wie ich das richtig machen soll. Meine temporäre Lösung war, Dagger von meiner Anwendung auszuschließen und die Context-Variable im Konstruktor zu übergeben, wenn ich die Presenter-Klasse und dann die Interactor-Klasse innerhalb des Presenters erstelle, aber ich möchte Dagger verwenden.

Also meine aktuelle Anwendung sieht ungefähr so ​​aus.

%Vor%

Konstruktor in MyPresenter

%Vor%

Und im Konstruktor in MyInteractor weise ich Context einer privaten Variable zu.

Ich müsste nur MyInteractor in MyPresenter einfügen, weil dies der Teil der Anwendung ist, der gegen verschiedene Implementierungen getestet werden muss. Aber wenn es auch möglich wäre, MyPresenter in MyActivity zu injizieren, wäre das großartig:)

Ich hoffe, jemand hat etwas Erfahrung mit dem, was ich erreichen möchte:)

    
Denis Vitez 01.04.2015, 09:27
quelle

1 Antwort

5

In Ihrer Klasse MyInteractor:

%Vor%

MyPresenter-Klasse

%Vor%

Um einen Kontext zu injizieren, müssen Sie ein Modul mit einer Bereitstellungsmethode schreiben:

%Vor%

Das Einfügen Ihrer Presenter-Klasse in Ihre Aktivität ist nicht so einfach, da Sie in Ihrem Konstruktor diesen MyView-Parameter haben, der von Dagger nicht gesetzt werden konnte. Sie könnten Ihr Design überdenken, indem Sie eine setMyView-Methode in Ihrer MyPresenter-Klasse anstelle eines Konstruktor-Parameters angeben.

Bearbeiten: Erstellen von RootModule

%Vor%     
Christopher 01.04.2015, 09:43
quelle

Tags und Links