我知道如何禁用按钮以防止它被点击两次。但是如果我想在安全的情况下再次启用它,我可以做这样的事情,我在onclick上调用setenabled(true)吗?一旦调用setenabled(false),按钮是否被禁用,或者仅在onclick功能完成时禁用该按钮?
button.setOnclickListener(new View.onClickListener(){
public void onClick(View v) {
button.setEnabled(false);
/// do stuff
button.setEnabled(true);
}
});
答案 0 :(得分:3)
为什么不让它变得更简单?
使用boolean
作为标志来检查进程何时运行。如果它正在运行,请不要运行它,直到先前的过程没有完成。
下面的代码示例将确保在任务运行时,onClickListener()
将不会触发。无需担心禁用然后再次启用它。
修改强>
经过长时间讨论(在评论中),Zabri。只是为了踢,我尝试了我最初发布的解决方案。事实证明,毕竟他正确。 : - (
我在初始解决方案中错了(未经测试,但 boo hoo 给我)。所以,时间来吸收和发布一个有效的测试解决方案。
指向 Zabri 的完整道具,指出代码中明显的缺陷。 : - )
例如(TESTED CODE):
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;
}
}
});
如上所述,这是未经测试的代码。我只是在这里打字。