Удалить обработчик кликов-GWT

Как удалить событие ClickHandler в GWT? Я добавил событие 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!

person Rangesh    schedule 26.04.2012    source источник
comment
Что вы имеете в виду под it fails и remove the handler with notification?   -  person jusio    schedule 26.04.2012
comment
Fails относится к HandlerEvent не удаляется, и я упомянул уведомление как экземпляр кнопки, который вызывает обработчик!   -  person Rangesh    schedule 26.04.2012


Ответы (2)


Каждый add...Handler метод возвращает HandlerRegistration интерфейс. Этот интерфейс содержит метод removeHandler(). Если вы хотите удалить обработчики, просто сохраните возвращаемый интерфейс в переменной и вызовите removeHandler, когда вы хотите удалить обработчик.

HandlerRegistration handler;

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

            }
        });
handler.removeHandler();            
person Hardik Mishra    schedule 26.04.2012
comment
Могу ли я удалить объект-обработчик позже? Спасибо - person calbertts; 01.10.2014

Это сработало для меня, я получаю регистрацию обработчика, когда привязываю событие,

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 );
                }
            } );
        }
person Maxi    schedule 20.05.2014