studio sirve que para obtener getapplicationcontext ejemplos contexto context activity actividad android dependency-injection android-context dagger-2

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