Ich versuche, meine App mit MVP-Muster und Dagger 2 für Dependency Injection zu refaktorieren.Dagger2 kann auf Presenter Ebene aber Null auf Modell Ebene
I Erstellen Sie ein Modul, das den Anwendungskontext bereitstellt, und ich möchte erhalten Kontext, um SharedPreferences
auf Model Layer zu erhalten.
I einzuspritzen Kontext auf Presenter Schicht und es funktioniert mit SharedPreference
, aber wenn ich zu Musterschicht bewegen, Dagger injizieren einen null
Wert auf Context
variabel.
Inject
@Inject
public Context mContext;
App Modul
AppModule bietet Context Anwendung
@Module
public class AppModule {
private App app;
public AppModule(App app){
this.app = app;
}
@Provides
public Context providesApp(){
return app.getApplicationContext();
}
}
Anwendung
public class App extends Application {
private AppComponent appComponent;
@Override
public void onCreate() {
super.onCreate();
appComponent = DaggerAppComponent.builder()
.appModule(new AppModule(this))
.mainModule(new MainModule())
.build();
}
public AppComponent getAppComponent(){
return appComponent;
}
}
App Component
@Component(modules = {AppModule.class,MainModule.class})
public interface AppComponent {
void inject(MainActivity activity);
void inject(LoginActivity activity);
}
Hauptmodul
@Module
public class MainModule {
@Provides
public MainContract.Model providesMainModel(){
return new MainModel();
}
@Provides
public LoginContract.Model providesLoginModel(){
return new LoginModel();
}
}
Sie können sich dieses Beispielprojekt ansehen http://github.com/mmirhoseini/marvel und diesen Artikel https://medium.com/@m_mirhoseini/yet-another-mvp-article-part-1- Lernen Sie das Projekt-d3fd553b3e21 kennen, um sich mit MVP vertraut zu machen. –
@MohsenMirhoseiniArgi Ich habe diesen Artikel und GitHub Repo gelesen, bevor ich auf SO frage. Vielen Dank für Ihren tollen Artikel und Probe: D – Sucipto