我无法在活动中接收自定义事件。任何人都可以告诉我我错过了什么?我正在使用GWT 2.1,MVP模式和UiBinder。GWT:如何从视图中触发自定义事件并使用活动
这里是我写的一个样本:
比方说,我有MyCustomEvent
类和它的处理程序接口MyCustomEventHandler
其onMyCustomEvent(MyCustomEvent event)
方法。
我执行活动中的处理程序接口:
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
类不会被调用。任何想法?太感谢了。
谢谢,你的方法也解释了[这里](http://stackoverflow.com/questions/3946242/passing-an-object-to-the-constructor-of-a-widget-defined-in-uibinder) 。但就我的理解而言,我不明白为什么我的方法行不通。 – 2011-03-21 13:36:56
我做了一些更多的调试。其结果似乎对我来说很奇怪。在start()方法中传递的eventBus实现与注入的不一样。事实上,我注入了一个SimpleEventBus,但在start()方法中使用了ResettableEventBus。我移动了eventBus.addHandler(MyEvent.TYPE,this);到Activity构造函数,它将eventBus作为参数。这确保eventBus对象与onModuleLoad()一起提供。尽管如此,接收器仍然未被触发!我真的无法完成这件事。 – 2011-03-21 13:51:30