Indietro quando ho usato RoboGuice, sono stato in grado di construire inject Context nelle mie classi e RoboGuice avrebbe scelto il contesto appropriato (inject in un'attività avrebbe il contesto Activity, inject in Application avrebbe il contesto dell'applicazione corrente, inietti in un Frammento avrebbe il contesto di attività del frammento, ecc ...).Daga con Android: come faccio a iniettare il contesto corrente?
Esiste un metodo simile per ottenere questo risultato con Dagger?
public class Thing {
@Inject
public class Thing(Context context){
// if i'm injected in an Activity, I should be the current activity's context
// if i'm injected in an Fragment, I should be the fragment's activity context
// if i'm injected in a Service, I should be the service's context
// etc...
}
}
Quando ho provato il metodo ForApplication, sono stato costretto dal compilatore ad annotare anche il membro iniettabile effettivo con ForApplication - giusto? Ho modificato la mia domanda con un po 'di codice di esempio. Dovrei inserire qui l'annotazione: public class Thing (contesto del contesto ForApplication). Ma questo mi fa sembrare che avrei sempre e solo il contesto dell'applicazione, è corretto? – Paul
Questo è corretto. Ho aggiornato la mia risposta. –
Il metodo di fabbrica è esattamente il tipo di codice della piastra della caldaia che Dagger dovrebbe sostituire. È fastidioso che non ci sia modo di passare argomenti a ObjectGraph.get(). – enl8enmentnow