12
我想刪除一個GWT事件處理程序,我第一次收到的事件。我也想避免用跟蹤沒有必要的註冊對象來污染我的課程。我目前編碼爲:GWT removeHandler在第一事件通知
final HandlerRegistration[] registrationRef = new HandlerRegistration[1]; registrationRef[0] = dialog.addFooHandler(new FooHandler() { public void onFoo(FooEvent event) { HandlerRegistration removeMe = registrationRef[0]; if(removeMe != null) { removeMe.removeHandler(); } // do stuff here } });
但是使用registrationRef會使代碼的可讀性降低。有沒有更好的方式來做到這一點,而不需要向我的班級添加變量?
是,謝謝。我想這是當你在一個類中只有一個這樣的監聽器的時候(當你擁有任意數量的小部件時,事情會變得更加混亂)。我希望有一種方法可以在不添加新字段的情況下執行此操作。哦... – Keith 2010-04-11 15:20:36
這可能不是直線前進,因爲它似乎。我具有其中處理程序設置爲空值在onXXX()方法的情況。爲什麼?因爲沒有什麼可以阻止GWT立即調用處理程序。例如,在IE情況Image.onLoad(),如果圖像已加載它實際上可以在addLoadHandler()呼叫期間調用的處理程序。我在這種情況下,唯一的解決方法是在「如果空」檢查清理後包裝,然後找到。 – John 2011-06-30 14:48:46
這不工作,如果處理程序可以添加多次。 – ubiquitousthey 2012-04-17 21:41:54