Durante lo sviluppo di un'applicazione Android sono incappato in un problema. Ho appena iniziato a usare Dagger, quindi conosco alcuni concetti di base, ma quando lo utilizzo al di fuori degli scopi delle esercitazioni e dei loro casi d'uso le cose diventano meno chiare.Daga con Android: come inserire il contesto quando si utilizza MVP?
Quindi, per arrivare al punto. Nella mia applicazione sto usando MVP come descritto in questo post del blog: http://antonioleiva.com/mvp-android/
Quindi all'inizio stavo iniettando la classe Interactor (quella che gestisce i dati) alla classe Presenter e tutto andava bene. Ma poi ho implementato metodi che utilizzano il database SQLite, quindi ora c'era bisogno di usare Context nella mia classe Interactor.
Non riesco a capire come dovrei farlo correttamente? La mia soluzione temporanea era escludere Dagger dalla mia applicazione e passare la variabile di contesto nel costruttore quando si creava la classe Presenter e poi la classe Interactor nel presenter, ma mi piacerebbe usare Dagger.
Quindi la mia applicazione corrente sembra un po 'come questa.
MyActivity implements MyView {
MyPresenter p = new MyPresenter(this, getApplicationContext());
}
Constructor all'interno MyPresenter
MyPresenter(MyView view, Context context) {
this.view = view;
MyInteractor i = new MyInteractor(context);
}
E nel costruttore in MyInteractor
assegno Context
ad una variabile privata.
Avrei solo bisogno di iniettare MyInteractor
a MyPresenter
, perché questa è la parte di applicazione che dovrà essere testata contro diverse implementazioni. Ma se fosse possibile inserire dei MyPresenter
-MyActivity
, che sarebbe grande :)
Spero che qualcuno ha una certa esperienza con quello che sto cercando di realizzare :)
Come è possibile che i tuoi 'RootModule' può ottenere il' BaseApplication'? – theblang
@mattblang: ho aggiunto questa parte alla mia risposta. – Christopher