Um die Dinge einfach zu machen, nehmen wir an, ich möchte EmailValidator aus Apache-Validatoren in meine Aktivität einfügen:
%Vor%Ich habe eine MainModule-Klasse:
%Vor%und MainComponent-Schnittstelle:
%Vor%Wenn ich versuche, meinen Validator in der Aktivität zu verwenden, erhalte ich eine Nullpointer-Ausnahme:
%Vor%Offensichtlich vermisse ich etwas. Ich weiß, dass Dolch eine Komponentenimplementierung für mich erstellt. Soll ich es benutzen? Wie?
Wenn ich in meiner onCreate-Methode Folgendes mache:
%Vor%dann funktioniert alles gut.
Aber ich möchte in der Lage sein, Annotation @Inject überall zu verwenden (wahrscheinlich auf Setter / Konstruktor anstelle eines Feldes).
Was fehlt mir?
Ich habe etwas Ähnliches mit dagger1 gemacht und es hat funktioniert. Natürlich musste ich ObjecGraph.inject(this)
in Aktivität aufrufen. Was ist das dagger2-Äquivalent?
BEARBEITEN:
Ok, ich habe eine Lösung gefunden. Wenn jemand jemals ein solches Problem haben sollte, gibt es einige Schnipsel:
1) Ich habe eine Anwendungsklasse erstellt:
%Vor%2) In AndroidManifest.xml:
%Vor%3) Und schließlich, in der Aktivitätsklasse, in der ich einige Komponenten dieser zwei hässlichen Linien einfügen möchte:
%Vor%Sieht so aus, als müssten Sie Ihre Komponente wie folgt erstellen:
%Vor% Normalerweise tun Sie dies in der onCreate
-Methode Ihrer Anwendung, auf diese Weise .
Eine gute Ressource, die Ihnen helfen kann, sind die Beispiel-Apps im Dagger 2-Repo .
Ich fand diese PR auch hilfreich, von einem vorgeschlagenen Update für Jake Whartons u2020-Beispiel-App (von der Hauptdagger 2 Engineer). Es gibt einen guten Überblick über die Änderungen, die Sie vornehmen müssen, wenn Sie von Dolch 1 zu 2 gehen, und das ist offensichtlich, was Er weist auch darauf hin, dass Menschen .