我知道如何禁用按钮,以防止它被点击两次。然而,如果我想再次启用它,只要它安全,我可以做类似的事情,我调用setenabled(true)在onclick??是一调用setenabled(false)就禁用按钮,还是只在onclick函数完成时禁用?
button.setOnclickListener(new View.onClickListener(){
public void onClick(View v) {
button.setEnabled(false);
/// do stuff
button.setEnabled(true);
}
});
为什么不简单一点呢?
使用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;
}
}
});
如前所述,这是未经测试的代码。我刚打出来的。