我知道如何禁用按钮以防止它被点击两次。但是,如果我想在它安全后立即再次启用它,我可以在 onclick 中调用 setenabled(true) 做这样的事情吗?按钮是在调用 setenabled(false) 后立即禁用,还是仅在 onclick 函数完成后才禁用?
button.setOnclickListener(new View.onClickListener(){
public void onClick(View v) {
button.setEnabled(false);
/// do stuff
button.setEnabled(true);
}
});
最佳答案
为什么不简化一下呢?
使用 boolean
作为标志来检查进程何时运行。如果它正在运行,请在前面的过程未完成之前不要运行它。
下面的代码示例将确保当任务运行时,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;
}
}
});
如前所述,这是未经测试的代码。我只是在这里打出来的。
关于java - 安卓按钮及其工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16272612/