2

我在一个类中定义了一个点击处理程序方法。如果单击屏幕上的取消按钮,我将尝试调用特定方法。这是代码片段 -

    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。

临时检查 = 真;

但如果条件失败,它总是进入其他部分。

如果(临时检查)

为什么会这样?这是因为java如何管理闭包吗?注意:如果条件必须在块之外,因为 this.callToMethodA() 也被其他点击处理程序使用。

4

2 回答 2

3

当您调用 时addClickHandler(),它会创建处理程序并立即继续执行下一条语句(If(tempCheck)在本例中)。正如您所假设的那样,它不会等待单击按钮。所以tempCheck在这一点上总是错误的。

单击按钮后要执行的任何代码都必须进入onClick()方法内部,或者进入您从中调用的方法中onClick()

于 2013-09-02T04:10:14.873 回答
0

您对事件处理的思考方式是错误的.....您必须在“onClick()本身”编写功能,无论您在单击关闭按钮时要执行哪个。但是在这里您所做的只是更改一个变量值...你没有在里面做你想做的功能onClick() 我希望你理解......即使你不明白这个......想想一次......你可以知道你的愚蠢错误.. .

于 2013-09-03T08:24:35.973 回答