Androidでボタン連打を防止する

2019年5月13日

Androidでは標準でボタン連打が実行できてしまい、開発者が意図しない挙動をすることが起こりえます。

そこで、下記コードのようにボタン押下後1000ms未満はボタンを押せないようにすることで、

意図しない挙動を防ぐことができます。

 

本稿では決め打ちで1000ms未満はボタン押下できないようにしていますが、

ボタン押下後の処理時間によっては1000ms未満では過不足があると思いますので適宜調整してください。

 

また、ボタン押下後に通信が発生する場合などは秒数で連打防止するのではなくて、

レスポンスを受け取るまでの間ボタンは押せないようにする等の対応が適切な場合もありますのでご注意ください。

 

 

ボタン押下後にボタンを無効化して1秒後に有効化する

import android.os.Handler;
final Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        button.setEnabled(false);
        new Handler().postDelayed(new Runnable() {
            public void run() {
                button.setEnabled(true);
            }
        }, 1000L);
        // ここにボタン押下時の処理を記載処理を書く
    }
});

その他のボタンの実装について

今回はボタン連打の防止について説明致しましたが、

下記についても他記事で説明しておりますので良かったらご覧ください。

 

ボタンの同時押しを禁止する方法

ボタンの形を変える方法

ボタンの背景色を変える方法