我無法在活動中接收自定義事件。任何人都可以告訴我我錯過了什麼?我正在使用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