Как получить контекст в Moxy Presenter Android - PullRequest
0 голосов
/ 08 июня 2018

Как я могу получить контекст активности из Moxy Presenter?На первый взгляд это очень просто ...: 1. Добавьте Context getMvpActivity (); в MvpView интерфейс и внедрите его в Acctivity.2. И в вызове докладчика getViewState().getMvpActivity().

Но Moxy не позволяет добавлять не пустые методы в интерфейс MvpView.Пожалуйста, помогите мне.

PS Мне нужен контекст в Presenter для инициализации компонента приложения (activity - это параметр для static getter).

Спасибо.Извините за некоторые грамматические ошибки.

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Правильное решение не использует контекст активности в докладчике.Потому что, в случае активного отдыха, этот контекст будет утекать (потому что ведущий будет еще жив).Вы можете использовать контекст приложения.Вы можете передать его через конструктор докладчика.

0 голосов
/ 08 июня 2018

Решил эту проблему, добавив контекст Activity в качестве параметра в onViewCreated().Как это:

//presenter super class
public void onViewCreated (Activity activity) {
    //init component here
    //this.component = ...
    injectPresenter ();
}

protected PresenterComponent getComponent () {
    return this.component;
}

protected abstract void injectPresenter ();



//presenter child class
@Override
public void onViewCreated (Activity activity) {
    super.onViewCreated(this);
}

@Override
protected void injectPresenter () {
    //you can name "inject" different ways
    //in your presenter component interface
    getComponent().inject(this);
}



//activity class
@Override
protected void onCreate () {
    //P.S.(for beginners) variable presenter is the object of class
    //which extends Presenter super class
    presenter.onViewCreated(this);
}
...