Dolch2 - null anstelle des injizierten Objekts

8

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%     
slnowak 25.02.2015, 16:46
quelle

1 Antwort

9

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 .

    
gMale 26.02.2015, 01:39
quelle

Tags und Links