Я изучаю, как использовать шаблон MVP и Dagger 2. Я внедрил докладчиков в представления и модели для докладчиков на основе учебных пособий, но не могу понять, как внедрить «внешние» вещи, такие как приложение / контекст, в одну из моих моделей.классы. Я читал кое-что о создании ContextModule, но я все еще не знаю, как заставить его работать с моими классами.Итак, у меня есть:
SettingsActivity - класс просмотра
class SettingsActivity : AppCompatActivity() {
@Inject
lateinit var settingsPresenter: SettingsPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
var component: SettingsComponent = DaggerSettingsComponent.create()
component.inject(this)
}
}
SettingsPresenter - класс докладчика с интерфейсами mvp
class SettingsPresenter : BasePresenter<SettingsContract.View>, SettingsContract.Presenter{
var settings: SettingsModel
@Inject
constructor(settings: SettingsModel) : super() {
this.settings = settings
}
}
interface SettingsContract {
interface View
interface Presenter
}
@Component
interface SettingsComponent {
fun inject(settingsActivity: SettingsActivity)
}
SettingsModel - класс модели
class SettingsModel {
@Inject
constructor() {
}
//I'd like to have my context field here
@Inject
lateinit var context: Context
}
AppModule - класс, который я хотел бы использовать для предоставления контекста
@Module
class AppModule {
var context: Context
constructor(context: Context) {
this.context = context
}
@Provides
fun getAppContext() : Context {
return context.applicationContext
}
}
Как я долженвставить контекст в SettingsModel и где его запустить?