如何在弹出/对话框中注销GWT eventbus处理程序?
我有一个对话框,其中包含一个按钮和一个TabLayoutPanel。按钮在桌子的外面。选项卡内容是独立的自定义小部件 问题是:我想通过在其中一个选项卡内容小部件中执行操作来响应对按钮的单击 我尝试以这种方式使用GWT事件总线:如何在弹出/对话框中注销GWT eventbus处理程序?,gwt,event-bus,Gwt,Event Bus,我有一个对话框,其中包含一个按钮和一个TabLayoutPanel。按钮在桌子的外面。选项卡内容是独立的自定义小部件 问题是:我想通过在其中一个选项卡内容小部件中执行操作来响应对按钮的单击 我尝试以这种方式使用GWT事件总线: 单击按钮时触发事件 在选项卡内添加此事件的处理程序 但问题是:如果我多次关闭/打开选项卡,事件处理程序将再次注册。单击按钮时,事件处理程序将启动多次(对于每个处理程序注册/无论选项卡打开多少次) 由于我的对话框没有活动/位置,我无法使用GWT的activity.start
activity.start(…EventBus EventBus)
自动取消活动注册
一种可能的解决方案是,当我离开选项卡时,手动记住已注册的HandlerRegistration
(s)和。removeHandler()
。但这是一个相当丑陋的解决方案
问题:有没有办法在对话框中注销事件而不记住它们?没有代码很难给出具体的答案,但我会这样做:
getSelectedIndex()
和getWidget(index)
应该是TabLayoutPanel上用于确定哪个小部件是活动的小部件的方法onClose()
事件