Я пытаюсь реорганизовать мое приложение с помощью MVP шаблон и Dagger 2 для Dependency Injection.Dagger2 может обеспечить на Presenter слое, но нуль на модели слоя
Создает модуль, который обеспечивает контекст приложений, и я хочу получить контекст, чтобы получить SharedPreferences
на уровне модели.
я впрыснуть контекст на Presenter слой и он работает с SharedPreference
, но когда я перехожу к модели слоя, Dagger придать значение null
на Context
переменной.
Вводят
@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();
}
}
Application
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(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- let-get-to-know-the-project-d3fd553b3e21, чтобы лучше узнать MVP. –
@MohsenMirhoseiniArgi Я прочитал эту статью и репетицию GitHub, прежде чем спросить о SO. Спасибо за вашу замечательную статью и образец: D – Sucipto