当我第一次点击重发按钮时,该按钮将禁用2秒钟.2秒后按钮将启用? 我正在使用此代码
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btn.setEnabled(false);
btn.postDelayed(new Runnable() {
public void run() {
btn.setEnabled(true);
Log.d(TAG,"resend1");
}
},1000);
}
});
但是这段代码运行不正常。
答案 0 :(得分:6)
为此目的尝试此操作,您可以使用处理程序(import android.os.Handler;
)
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btn.setEnabled(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// This method will be executed once the timer is over
btn.setEnabled(true);
Log.d(TAG,"resend1");
}
},2000);// set time as per your requirement
}
});
答案 1 :(得分:1)
您可以使用计时器
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myButton.setEnabled(false);
Timer buttonTimer = new Timer();
buttonTimer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
myButton.setEnabled(true);
}
});
}
}, 5000);
}
});
答案 2 :(得分:0)
找到解决方案
点击按钮
long mLastClickTime;
yourButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
disableButtonTwoSecs();
// Here your implementation
}
});
public static boolean disableButtonTwoSecs() {
if (SystemClock.elapsedRealtime() - mLastClickTime < 2000) {
return true;
}
mLastClickTime = SystemClock.elapsedRealtime();
return false;
}