我想在第一次收到事件时删除GWT事件处理程序。我还想避免跟踪不必要的注册对象而污染我的类(class)。我目前将其编码为:
最终的HandlerRegistration [] registrationRef = new HandlerRegistration [1];
registrationRef [0] = dialog.addFooHandler(new FooHandler()
{
公共(public)无效onFoo(FooEvent事件)
{
HandlerRegistration removeMe = registrationRef [0];
if(removeMe!= null)
{
removeMe.removeHandler();
}
//在这里做东西
}
});
但是使用registrationRef会使代码的可读性降低。有没有一种更好的方法可以在不向类添加变量的情况下做到这一点?
最佳答案
我只是将HandlerRegistration
对象作为封闭类的一个字段,这样您就不会被编译器所困扰,并且比对数组和内容进行混洗更“优雅”:
public class TestWidget extends Composite {
//...
HandlerRegistration handler;
public TestWidget() {
// ...
handler = button.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// ...
handler.removeHandler();
}
});
}
}