我在类中定义了一个单击处理程序方法。如果单击屏幕上的取消按钮,我会尝试调用特定方法。 这是代码片段 -
boolean tempCheck;
@Override
protected void onBind() {
super.onBind();
...
...
getViewName().getVar().addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
//Doing some operation and making tempCheck true
tempCheck = true;
}
});
If(tempCheck){
this.box.getButtonName().addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
this.box.hide();
this.getViewName().hide();
}
});
} else {
this.callToMethodA();
}
}
单击该按钮时,tempCheck布尔变量变为true。
tempCheck = true;
但如果条件失败,它总是进入其他部分。
如果(tempCheck)
为什么会这样?这是因为java管理的闭包? 注意:如果条件必须在块之外,因为this.callToMethodA()也被其他单击处理程序使用。
答案 0 :(得分:3)
当你调用addClickHandler()
时,它会创建处理程序并立即继续下一个语句(在这种情况下为If(tempCheck)
)。它不会等待点击按钮,正如您似乎所假设的那样。所以tempCheck
此时总是假的。
点击按钮后要执行的任何代码都必须放在onClick()
方法内,或放在从onClick()
调用的方法内。
答案 1 :(得分:0)
您对事件处理的思考方式是错误的.....当您单击关闭按钮时,您必须在onClick()
本身旁边编写功能,无论您想执行哪个。
但是这里你正在做的只是改变一个变量值...你没有在onClick()
内做你想做的功能
我希望你明白......即使你不明白这一点......想一想......你可以知道你的愚蠢错误......