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);

    }
});

Tags:

Android

Button