我怀疑Widget的ClickHandler存在问题。是否通过调用父Widget的clear()方法从其父级中删除ClickHandler-added-Widget导致实时ClickHandler?
答案 0 :(得分:0)
如果元素本身从其父元素中删除,则不会删除元素的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的列表(您必须始终保持最新状态,然后添加或删除窗口小部件)并循环遍历此列表,调用{{1}清除父母时。