b.setOnClickListener(new OnClickListener()) {
public void onClick(View arg0) {
try{
Thread.sleep(10000);
}catch(Exception e){}
}
});
在上面的代码中,我不想在Therad工作之前再采取任何Button动作。目前,当我再次按下应用程序要求强制关闭或等待。我不想要那个而不喜欢对这个按钮采取任何行动。
需要帮助。感谢
答案 0 :(得分:4)
添加全局布尔值,并在单击它时将其设置为true。点击按钮检查它。如果设置然后返回,否则运行线程。在线程的末尾再次将其设置为false。
boolean clicked = false;
b.setOnClickListener(new OnClickListener()) {
public void onClick(View arg0) {
if( clicked )
return;
try{
clicked = true;
Thread.sleep(10000);
}catch(Exception e){}
}
});
当你从睡梦中回来时,设置clicked = false。
答案 1 :(得分:0)
最好将AsyncTask用于您的作品。并根据您的要求使用get()
AsyncTask
方法。
假设按钮点击execute()
AsyncTask
并在等待get()
的{{1}}之后停用按钮,该按钮将在完成AsyncTask和结果时返回AsyncTask
再次启用您的按钮。因此,您可以在活动中避免Result
。
答案 2 :(得分:0)
在处理上一个点击时,至少有两种阻止进一步点击的方法:
1)在开头按下按钮,然后在onClick
结束时重新启用:
b.setOnClickListener(new OnClickListener()) {
public void onClick(View arg0) {
b.setEnabled(false);
//do your stuff
b.setEnabled(true);
}
});
2)在onClick
的开头设置一个标志,并在最后清除它:
(类级)
boolean isInOnClick = false;
然后
b.setOnClickListener(new OnClickListener()) {
public void onClick(View arg0) {
if(!isInOnClick) {
isInOnClick = true;
//do your stuff
isInOnClick = false;
}
}
});