我正在使用GWT mvp示例项目来创建我自己的mvp应用程序。
我几乎做了他们做的事,我。即定义了一个Presenter
接口,然后定义了不同的演示者类。
在他们的代码中,他们在其中一个View
类中执行了类似的操作:
@UiHandler("loginButton")
void onClick(ClickEvent e) {
if (presenter != null) {
presenter.onLoginButtonClicked();
}
}
通过这种方法注入演示者:
public void setPresenter(IPresenter presenter) {
this.presenter = presenter;
}
嗯......结果,我无法调用onLoginButtonClicked,因为IPresenter是一个接口。他们在代码中这样做。这应该如何运作?
答案 0 :(得分:2)
您必须有一个实现此视图的Presenter接口的类。
类似的东西:
public class MyActivity extends AbstractActivity implements MyView.Presenter {}
然后你有一个View类:
public interface MyView extends IsWidget {
public interface Presenter {
void onLoginButtonClicked();
}
void setPresenter(Presenter listener);
}
最后,您将实现此视图:
public class MyViewImpl extends Composite implements MyView {}
注意:我强烈推荐Activities and Places模式。它为具有多个视图的任何应用程序提供了良好的结构,并增加了良好的历史支持。