1

我知道如何禁用按钮以防止它被点击两次。但是,如果我想在安全的情况下再次启用它,我可以在 onclick 中调用 setenabled(true) 吗?是在调用 setenabled(false) 后立即禁用按钮还是仅在 onclick 功能完成时才禁用?

   button.setOnclickListener(new View.onClickListener(){

          public void onClick(View v) {
                button.setEnabled(false);
                /// do stuff
                button.setEnabled(true);
          }
    });
4

1 回答 1

3

为什么不让它更简单呢?

使用 aboolean作为标志来检查进程何时运行。如果它正在运行,请不要运行它,直到前面的过程没有完成。

下面的代码示例将确保在任务运行时,onClickListener()不会触发。无需担心禁用然后再次启用它。

编辑:

经过长时间的讨论(在评论中),与Zabri。只是为了好玩,我尝试了我最初发布的解决方案。事实证明,他毕竟是对的。:-(

我在最初的解决方案中错了(未经测试,但对我来说是嘘声)。因此,是时候吸收并发布一个有效且经过测试的解决方案了。

Zabri指出代码中明显缺陷的完整支持。:-)

例如(测试代码):

boolean taskRunning = false;
button1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        if (taskRunning == false) {

            // TOGGLE THE boolean HERE TO INDICATE RUNNING
            taskRunning = true;

            // / do stuff

            // TOGGLE THE boolean HERE TO INDICATE TASK COMPLETED
            taskRunning = false;

        }

    }
});

如前所述,这是未经测试的代码。我只是在这里打出来的。

于 2013-04-29T06:50:33.587 回答