如何删除GWT中的ClickHandler事件?我为一个按钮添加了addClickHandler()事件,我想删除ClickHandler事件。我尝试了HandlerRegistration方法但是它无法删除处理程序,这是一个片段:
notification.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// TODO Auto-generated method stub
}
});
我想删除带有通知的处理程序!
Note:
Notification is the button instance that calls the handler!
答案 0 :(得分:22)
每个add...Handler
方法返回HandlerRegistration
接口。此接口包含removeHandler()
方法。如果要删除处理程序,只需将返回的接口存储在变量中,并在想要删除处理程序时调用removeHandler。
HandlerRegistration handler;
handler = button.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// ...
}
});
handler.removeHandler();
答案 1 :(得分:1)
这对我有用,我在绑定事件时获得了Handler注册,
closeIconHandlerRegistration = closeImg.addClickHandler( new ClickHandler()
{
@Override
public void onClick( ClickEvent event )
{
addCloseClickHanlder();
}
} );
之后当我需要删除处理程序时......
if ( this.getCloseButtonHandlerRegistration() != null )
{
this.getCloseButtonHandlerRegistration().removeHandler();
this.getCloseImg().addClickHandler( new ClickHandler()
{
@Override
public void onClick( ClickEvent event )
{
SaveCancelCommissionChangeEvent saveEvt = new SaveCancelCommissionChangeEvent();
saveEvt.setSave( false );
tabEventBus.fireEvent( saveEvt );
}
} );
}