我无法在活动中收到自定义事件。谁能告诉我我错过了什么?我正在使用GWT 2.1,MVP模式和UiBinder。
以下是我写的内容示例:
假设我有MyCustomEvent
类及其处理程序接口MyCustomEventHandler
及其onMyCustomEvent(MyCustomEvent event)
方法。
我在Activity中实现了处理程序接口:
class MyActivity extends AbstractActivity implements MyCustomEventHandler {
....
public void onMyCustomEvent(MyCustomEvent event) {
doWhatYouKnow();
}
//EventBus is injected with GIN
public void start(AcceptsOneWidget container, EventBus eventBus) {
...
eventBus.addHandler(MyEvent.TYPE, this);
}
}
现在,视图中的发送部分:
public class MyWidget extends Composite {
final PopUpPanel myPopUp;
public MyWidget() {
initWidget(uiBinder.createAndBindUi(this));
myPopUp.addCloseHandler(new CloseHandler<PopupPanel>() {
@Override
public void onClose(CloseEvent<PopupPanel> event) {
MyEvent event = new MyEvent();
fireEvent(event);
}
});
}
}
不会抛出任何异常,遗憾的是onMyCustomEvent
类中永远不会调用MyActivity
。任何的想法?万分感谢。
答案 0 :(得分:0)
@MyWidget
你可以使构造函数获取参数(eventBus) 您可以从MyActivity类传递此内容
所以当你解雇事件@MyActivity时 该动作将被执行@MyWidget
尝试这个,我认为它会起作用。
答案 1 :(得分:0)
我认为您的一条评论指向了正确的方向。我要猜测的是你有多个EventBus
浮动(每个应用程序通常只应该有一个事件总线)。
首先,确保您的Gin模块中的EventBus
绑定在Singleton
范围内。另外,请确保这是您传递到PlaceController
的事件总线,而不是您自己构建的事件总线。
另外,我不会太担心你的对象在一个地方是ResettableEventBus
这个事实。我相信这只是一个由Activities / Places框架创建的对象,它只包装你给它的EventBus
对象。