手持设备注册的gwt问题

手持设备注册的gwt问题,gwt,handlers,Gwt,Handlers,我有个问题。 我有一个地图和添加的ClickHandler,但按下一个按钮后,我想删除它。我知道有一些手机,但我不知道怎么用。 我的部分代码: map.addMapClickHandler(new MapClickHandler() { public void onClick(MapClickEvent e) { ... } }); 有人能帮我吗

我有个问题。 我有一个地图和添加的ClickHandler,但按下一个按钮后,我想删除它。我知道有一些手机,但我不知道怎么用。 我的部分代码:

map.addMapClickHandler(new MapClickHandler()

        {
            public void onClick(MapClickEvent e) 
            {
                 ...
                }
        });
有人能帮我吗?

不返回HandlerRegistration,但MapWidget类定义了:


如果你还需要这个,我花了一段时间才想出解决办法

final Set<HandlerRegistration> hack = new HashSet<HandlerRegistration>();
hack.add(map.addMapClickHandler(new MapClickHandler() {
    public void onClick(MapClickEvent e) {
        ...
        // remove handler here
        for (HandlerRegistration hr : hack) {
            hr.removeHandler();
        }
    }
}));
final Set hack=new HashSet();
hack.add(map.addMapClickHandler)(新的MapClickHandler(){
公共void onClick(MapClickEvent e){
...
//在这里删除处理程序
对于(HandlerRegistration hr:hack){
hr.removeHandler();
}
}
}));

地图中有谷歌地图,您可以在其中添加点。有一个错误:“类型不匹配:无法从void转换为handleRegistration”您是对的-我没有使用地图API,所以我没有实际测试我编写的内容。我的答案中的例子现在应该起作用了,但仍然不起作用。因为我想在按下按钮后删除此处理程序,该按钮将显示路线(来自先前添加的标记),您能否更具体地说明此解决方案不起作用的原因?如果需要从其他地方调用MapWidget#removeMapClickHandler(),只要保留对MapClickHandler的引用,就可以这样做。好的,我用另一种方法处理了(不删除处理程序)。无论如何,谢谢你的帮助。
final Set<HandlerRegistration> hack = new HashSet<HandlerRegistration>();
hack.add(map.addMapClickHandler(new MapClickHandler() {
    public void onClick(MapClickEvent e) {
        ...
        // remove handler here
        for (HandlerRegistration hr : hack) {
            hr.removeHandler();
        }
    }
}));