Remove Click Handler-GWT
Asked Answered
F

2

8

How to remove the ClickHandler Event in GWT? I added addClickHandler() Event for a button and i want to remove the ClickHandler Event.I tried HandlerRegistration Method But it failed to remove the handler ,Here is a snippet :

notification.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            // TODO Auto-generated method stub
        }

    });  

I want to remove the handler with notification !

Note:
Notification is the button instance that calls the handler!
Favata answered 26/4, 2012 at 13:48 Comment(2)
What do you mean by it fails and remove the handler with notification?Cornwall
Fails refers to HandlerEvent is not removed and i have mentioned notification as button instance that calls the handler !Favata
C
22

Each add...Handler method returns the HandlerRegistration interface. This interface contains the removeHandler() method. If you want to remove handlers, simple store the returned interface in a variable and call removeHandler when you want to remove the handler.

HandlerRegistration handler;

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

            }
        });
handler.removeHandler();            
Claver answered 26/4, 2012 at 16:20 Comment(1)
Can I get the handler object to remove later? ThanksNepotism
C
1

This worked for me, I get the Handler registration when I bind the event,

closeIconHandlerRegistration = closeImg.addClickHandler( new ClickHandler()
        {
            @Override
            public void onClick( ClickEvent event )
            {
                addCloseClickHanlder();
            }
        } );

After that When I need to remove the handler...

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 );
                }
            } );
        }
Convertite answered 20/5, 2014 at 9:6 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.