提问者:小点点

android按钮及其工作原理


我知道如何禁用按钮,以防止它被点击两次。然而,如果我想再次启用它,只要它安全,我可以做类似的事情,我调用setenabled(true)在onclick??是一调用setenabled(false)就禁用按钮,还是只在onclick函数完成时禁用?

   button.setOnclickListener(new View.onClickListener(){

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

共1个答案

匿名用户

为什么不简单一点呢?

使用boolean作为检查进程何时运行的标志。如果它正在运行,在前面的进程没有完成之前不要运行它。

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

编辑:

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

我错了最初的解决方案(这是未经测试的,但对我来说是boo hoo)。因此,是时候来学习并发布一个工作的、经过测试的解决方案了。

完全支持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;

        }

    }
});

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