ANDROID: How to put a delay after a button is pushed?
In your onClickListener for the button:
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);
This will disable the button when clicked, and enable it again after 5 seconds.
If the click event is handled in a class that extends View rather than in an Activity do the same thing but replace runOnUiThread
with post
.
You can disable your button, then use the postDelayed method on your button.
myButton.setEnabled(false);
myButton.postDelayed(new Runnable() {
@Override
public void run() {
myButton.setEnabled(true);
}
}, 5000);
This is similar to the Timer solution, but it might better handle configuration change (for example if the user rotate the phone)
Here you go.
((Button) findViewById(R.id.click))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
((Button) findViewById(R.id.click)).setEnabled(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
((Button) findViewById(R.id.click))
.setEnabled(true);
}
}, 5000);
}
});