Ich einige Zeit einige Dinge mit Dagger testen, nach der Überwachung der Reihe von Artikeln hier: http://antonioleiva.com/dependency-injection-android-dagger-part-1/, ging zurück für weitere Informationen, sah ich einige gute Beispiele wie diese: https://github.com/adennie/fb-android-dagger, die meisten von die sich auf das Injizieren von Abhängigkeiten auf Activity
, Fragment
, Service
und verwandte konzentriert. Ich möchte eine ähnliche Sache mit RoboGuice machen.Inject Objekt Ressourcen in Class Util (mit Dolch)
In RoboGuice
public class Utils {
@InjectResource(R.string.hello_world) private String hello;
public void showLog(){
System.out.println("String from injected resource : " + hello);
}
}
In Dagger
public class Utils {
@Inject
Resources mResource;
public void showLog() {
System.out.println("String from injected resource : " + this.mResource.getString(R.string.hello_world));
}
}
Ich habe ein Modul in meiner Anwendung:
@Module(injects = {Utils.class }, complete = false, library = true)
public class ResourceModule {
Context mContext;
public ResourceModule (final Context mContext) {
this.mContext = mContext;
}
@Provides
@Singleton
Resources provideResources() {
return this.mContext.getResources();
}
}
versucht, dies in meiner Aktivität
Utils mUtils = new Utils();
mUtils.showLog();
Aber ich bin immer NullPointerException
. Hat jemand schon etwas Ähnliches gemacht?
aber was kann man sonst ohne das ObjectGraph explizit übergeben? –
@ André.C.S überprüfen Sie die aktualisierte Antwort. Ich habe ein paar Informationen über Konstruktor Injektion hinzugefügt – tomrozb
Erstens, danke für meine Zweifel zu hören, ich weiß, das ist eine einfache Sache, und trotz der Lernkurve in dieser Lib ein wenig groß, ich bin überzeugt, es für die Prozessoptimierung zu verwenden in Bezug auf RoboGuice mit Reflektion –