繁体   English   中英

未使用removeEventListener从任何组件中删除ZK事件侦听器

[英]ZK Event listener not removed from any component using removeEventListener

我在从选项卡和工具栏按钮删除事件侦听器时遇到问题。

我已经在工具栏按钮上添加了一个事件监听器,然后做了一些保存后,我无法删除监听器。

exitButton是一个工具toolbarbutton

两种方法都在同一类中。 但是第一个Time exitButtononClick事件上有一些不同的逻辑,但是当我保存数据并通过globalcommand调用disable()方法以删除onClick事件侦听器时。

@AfterCompose
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
    Selectors.wireComponents(view, this, false);
    exitButton.addEventListener("onClick", new EventListener<Event>() {

        public void onEvent(Event evt) throws Exception {
            Messagebox.show("adddingggg");
        }
    });
}

@GlobalCommand
public void disable() {
    exitButton.removeEventListener("onClick", new EventListener<Event>() {

        public void onEvent(Event evt) throws Exception {
            Messagebox.show("remocvee");
        }
    });
}

保存后如何删除事件监听器?

请记住,您的EventListener实例必须返回true
如果它是为先前添加的侦听器调用的Object#equal的参数。

EventListener evl;

@AfterCompose
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
    Selectors.wireComponents(view, this, false);
    exitButton.addEventListener("onClick", evl = new EventListener<Event>() {

        public void onEvent(Event evt) throws Exception {
            Messagebox.show("adddingggg");
        }
    });
}

@GlobalCommand
public void disable() {
    if(exitButton.removeEventListener("onClick", evl))
            Messagebox.show("success");
}

这将删除EventListener,并在成功时显示消息。
您的问题是您创建了一个新对象,因此它不等于旧对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM