Sto usando Dagger 2 e funziona, tuttavia ora ho bisogno di accedere al contesto dell'applicazione Android.Dagger 2 che inietta Android Context
Non mi è chiaro come iniettare e accedere al contesto. Ho cercato di fare questo nel modo seguente:
@Module
public class MainActivityModule {
private final Context context;
MainActivityModule(Context context) {
this.context = context;
}
@Provides @Singleton
Context provideContext() {
return context;
}
Tuttavia, questo risultato è la seguente eccezione:
java.lang.RuntimeException: impossibile creare applicazioni: java.lang.IllegalStateException: mainActivityModule deve essere set
Se ispezionare il codice Pugnale generato questa eccezione viene sollevata qui:
public Graph build() {
if (mainActivityModule == null) {
throw new IllegalStateException("mainActivityModule must be set");
}
return new DaggerGraph(this);
}
Non sono sicuro che questo sia il modo corretto per iniettare Context - qualsiasi aiuto sarà molto apprezzato.
Io non sono sicuro se l'iniezione di contesto di applicazione ha senso. È possibile estendere la classe Application e creare un'istanza statica dell'applicazione. Puoi chiamarlo ad es. 'BaseApplication'. Dopodiché, puoi creare il metodo 'get()' all'interno della tua classe Application estesa, che restituirà quell'istanza e sarà Application Context allo stesso tempo. Quindi, puoi utilizzare la seguente struttura per raggiungere il contesto dell'applicazione da qualsiasi posizione nel tuo progetto: 'BaseApplication.get()'. Dovresti usarlo con attenzione e solo quando è necessario. –