【发布时间】:2017-01-05 12:33:14
【问题描述】:
我怀疑 Widget 的 ClickHandler 存在问题。是不是通过调用父Widget的clear()方法从父Widget中移除ClickHandler-added-Widget会导致Live ClickHandler?
【问题讨论】:
标签: gwt
我怀疑 Widget 的 ClickHandler 存在问题。是不是通过调用父Widget的clear()方法从父Widget中移除ClickHandler-added-Widget会导致Live ClickHandler?
【问题讨论】:
标签: gwt
您的假设是正确的,即当元素本身从其父元素中删除时,元素的 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()父母。
【讨论】: