Как добавить контекст в класс Model в MVP Android? - PullRequest
0 голосов
/ 29 декабря 2018

Я изучаю, как использовать шаблон 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 и где его запустить?

...