如何从Moxy演示者获取活动上下文?
乍一看它很容易......:1。将Context getMvpActivity ();
添加到MvpView
界面并在Acivity中实现它。
2.在演讲者的电话中getViewState().getMvpActivity()
。
但是Moxy不允许将非空方法添加到MvpView
接口。
请帮助我。
P.S。我需要Presenter中的上下文来初始化应用程序组件(activity
是static
getter的参数。)
感谢。对不起,有些语法错误。
答案 0 :(得分:3)
正确的解决方案是不在演示者中使用活动上下文。因为,在活动娱乐的情况下,此上下文将泄漏(因为演示者将仍然活着)。您可以使用应用程序上下文。您可以通过演示者的构造函数传递它。
答案 1 :(得分: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);
}