sirve - Daga 2 inyectando Contexto Android
que es el context en java (2)
No se estaba construyendo correctamente el componente de la Aplicación, se necesitaba pasar en la Aplicación. Este ejemplo de Dagger 2 muestra perfectamente cómo hacer esto: https://github.com/google/dagger/tree/master/examples/android-simple/src/main/java/com/example/dagger/simple
Actualizar:
Enlace de trabajo: https://github.com/yongjhih/dagger2-sample/tree/master/examples/android-simple/src/main/java/com/example/dagger/simple
Estoy usando Dagger 2 y lo tengo funcionando, pero ahora necesito acceso al contexto de la aplicación de Android.
No me queda claro cómo inyectar y acceder al contexto. He intentado hacer esto de la siguiente manera:
@Module
public class MainActivityModule {
private final Context context;
MainActivityModule(Context context) {
this.context = context;
}
@Provides @Singleton
Context provideContext() {
return context;
}
Sin embargo, esto resulta en la siguiente excepción:
java.lang.RuntimeException: no se puede crear la aplicación: java.lang.IllegalStateException: mainActivityModule debe configurarse
Si inspecciono el código generado por Dagger, esta excepción aparece aquí:
public Graph build() {
if (mainActivityModule == null) {
throw new IllegalStateException("mainActivityModule must be set");
}
return new DaggerGraph(this);
}
No estoy seguro de si esta es la forma correcta de inyectar Context: cualquier ayuda será muy apreciada.
@Module
public class MainActivityModule {
private final Context context;
public MainActivityModule (Context context) {
this.context = context;
}
@Provides //scope is not necessary for parameters stored within the module
public Context context() {
return context;
}
}
@Component(modules={MainActivityModule.class})
@Singleton
public interface MainActivityComponent {
Context context();
void inject(MainActivity mainActivity);
}
Y entonces
MainActivityComponent mainActivityComponent = DaggerMainActivityComponent.builder()
.mainActivityModule(new MainActivityModule(MainActivity.this))
.build();