【问题标题】:Clear() method on GWT Widgets doesn't remove the child Widgets' ClickHandlerGWT 小部件上的 Clear() 方法不会删除子小部件的 ClickHandler
【发布时间】:2017-01-05 12:33:14
【问题描述】:

我怀疑 Widget 的 ClickHandler 存在问题。是不是通过调用父Widget的clear()方法从父Widget中移除ClickHandler-added-Widget会导致Live ClickHandler?

【问题讨论】:

    标签: gwt


    【解决方案1】:

    您的假设是正确的,即当元素本身从其父元素中删除时,元素的 ClickHandler 不会被删除。但这不是问题,因为父级的 clear() 方法只是删除了所有子小部件,仅此而已。否则,例如,如果您从其父元素中删除元素并将其添加到新容器中,则始终必须再次添加 ClickHandler。

    如果您的情况确实需要,您可以在调用clear() 方法后使用 HandlerRegistration 删除 ClickHandler。

    HandlerRegistration handler = button.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            //Do something
        }
    });
    
    parent.clear();
    handler.removeHandler();
    

    如果您想对所有子小部件执行此操作,您可以使用带有 HandlerRegistrations 的列表(您必须始终保持最新,您添加或删除小部件)并在清除此列表时循环调用 removeHandler()父母。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多