Inyectar objetos de objetos en Class Util (usando Dagger)

Yo alguna vez probar algunas cosas con Dagger, después de supervisar la serie de artículos aquí: http://antonioleiva.com/dependency-injection-android-dagger-part-1/ , volvió para obtener más información, vi algunos buenos ejemplos como Estos: https://github.com/adennie/fb-android-dagger , la mayoría de los cuales se centran en la inyección de dependencias de Activity , Fragment , Service y relacionados. Estoy deseando hacer algo similar con RoboGuice.

En RoboGuice

 public class Utils { @InjectResource(R.string.hello_world) private String hello; public void showLog(){ System.out.println("String from injected resource : " + hello); } } 

En daga

 public class Utils { @Inject Resources mResource; public void showLog() { System.out.println( "String from injected resource : " + this.mResource.getString( R.string.hello_world ) ); } } 

He creado un módulo en mi aplicación:

 @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(); } } 

Intenté esto en mi actividad

 Utils mUtils = new Utils(); mUtils.showLog(); 

Pero estoy recibiendo NullPointerException . Alguien ya hizo algo similar?

Tienes que inyectar el objeto usando el método de inject .

Asumiendo que su ObjectGraph se inicializa en la clase App que es una subclase de la Application y expone el método public inject con la implementación como a continuación:

 public void inject(Object object) { mObjectGraph.inject(object); } 

Después de crear la instancia de Utils tiene que inyectar sus dependencias.

 Utils mUtils = new Utils(); ((App) getApplication).inject(mUtils); mUtils.showLog(); 

Editar:

También puede utilizar la inyección del constructor (no es necesario pasar el objeto a ObjectGraph )

 public class Utils { private final Resources mResource; @Inject public Utils(Resources resources) { mResources = resources; } public void showLog() { System.out.println( "String from injected resource : " + this.mResource.getString( R.string.hello_world ) ); } } 

Con la inyección del constructor el objeto debe ser creado por el ObjectGraph

 Utils mUtils = mObjectGraph.get(Utils.class); 
  • Aplicación para Android con RoboGuice 2.0 - Cómo inyectar un singleton con el contexto de la aplicación
  • Roboguice inyección en el adaptador
  • Gradle y varios proyectos con Roboguice dependencia
  • Roboguice, AndroidAnnotations y eventos entre hilos
  • Maven + RoboGuice + ActionBarSherlock + RoboGuice-Sherlock
  • Inyectar objeto con constructor que toma un parámetro usando RoboGuice 2
  • Android - Configuración de Roboguice 2.0?
  • Cómo inyectar el contexto usando RoboGuice en Android?
  • Roboguice y simulacros: ¿Cómo roboguice inyectar un servicio de simulacro cuando la prueba, pero utiliza el REAL de lo contrario?
  • RoboGuice unidad de prueba de inyección de módulo de aplicación en lugar de módulo de prueba
  • Robolectric + PowerMock + Mockito no funciona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.