8

如何删除 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!
4

2 回答 2

22

每个add...Handler方法都返回HandlerRegistration接口。该接口包含removeHandler()方法。如果要删除处理程序,只需将返回的接口存储在变量中,并在要删除处理程序时调用 removeHandler。

HandlerRegistration handler;

handler = button.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                // ...

            }
        });
handler.removeHandler();            
于 2012-04-26T16:20:44.703 回答
1

这对我有用,我在绑定事件时获得了处理程序注册,

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 );
                }
            } );
        }
于 2014-05-20T09:06:55.983 回答