我有这段代码:
private HandlerRegistration filterImageHandlerReg=null;
public void resetVariables(){
if(filterImageHandlerReg!=null){
filterImageHandlerReg.removeHandler();
}
}
public void callData(){
resetVariables();
for(int i=0; i<getView().getFilterImageList().size(); i++){
Image filterImage=getView().getFilterImageList().get(i);
filterImageHandlerReg= filterImage.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
System.out.println("test");
}
});
}
}
Thre是callData();
的按钮,当我点击该按钮一次,一切正常,这意味着点击图片时会打印出来:
test
然而,如果我点击按钮2次&amp;然后当点击图像一次时,它将打印出来
test test
表示图片已添加多个ClickHandler();
&amp; filterImageHandlerReg.removeHandler();
不起作用。
如何解决问题?
答案 0 :(得分:0)
我认为你应该保留一份HandlerRegistration列表。
private List<HandlerRegistration> filterImageHandlerRegistrations=null;
public void resetVariables(){
if(filterImageHandlerRegistrations!=null){
for(HandlerRegistration handlerRegistration: filterImageHandlerRegistrations)
handlerRegistration.removeHandler();
}
}
public void callData(){
resetVariables();
filterImageHandlerRegistrations=new ArrayList<HandlerRegistration>();
for(int i=0; i<getView().getFilterImageList().size(); i++){
Image filterImage=getView().getFilterImageList().get(i);
filterImageHandlerRegistrations.add(filterImage.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
System.out.println("test");
}
}));
}
}