4

如何从 Moxy Presenter 获取活动上下文?乍一看很简单...: 1. 添加Context getMvpActivity ();MvpView接口并在活动中实现。2. 在演示者通话getViewState().getMvpActivity()中。

但是 Moxy 不允许将非 void 方法添加到MvpView接口。请帮助我。

PS我需要Presenter中的上下文来初始化App Component(activitystaticgetter的参数)。

谢谢。抱歉有些语法错误。

4

2 回答 2

6

正确的解决方案是不在演示者中使用活动上下文。因为,在活动重新创建的情况下,此上下文将泄漏(因为演示者仍然活着)。您可以使用应用程序上下文。您可以通过演示者的构造函数传递它。

于 2018-06-09T06:04:03.770 回答
0

通过将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);
}
于 2018-06-08T15:08:31.523 回答