我正在嘗試使用MVP模式和Dagger 2對依賴注入進行重構。Dagger2可以在Presenter圖層上提供,但在模型圖層上爲null
我創建提供應用程序上下文的模塊,並且我想讓上下文在Model Layer上獲得SharedPreferences
。
我注入語境演示層,它的工作與SharedPreference
,但是當我移動到模型層,匕首上Context
變量注入null
值。
進樣
@Inject
public Context mContext;
APP模塊
的AppModule提供應用上下文
@Module
public class AppModule {
private App app;
public AppModule(App app){
this.app = app;
}
@Provides
public Context providesApp(){
return app.getApplicationContext();
}
}
應用
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;
}
}
應用組件
@Component(modules = {AppModule.class,MainModule.class})
public interface AppComponent {
void inject(MainActivity activity);
void inject(LoginActivity activity);
}
主模塊
@Module
public class MainModule {
@Provides
public MainContract.Model providesMainModel(){
return new MainModel();
}
@Provides
public LoginContract.Model providesLoginModel(){
return new LoginModel();
}
}
你可以看看這個示例項目http://github.com/mmirhoseini/marvel和本文https://medium.com/@m_mirhoseini/yet-another-mvp-article-part-1-讓我們瞭解項目d3fd553b3e21以更熟悉MVP。 –
@MohsenMirhoseiniArgi在我問這個問題之前,我已經閱讀過這些文章和GitHub回購。感謝您的精彩文章和示例:D – Sucipto