AndroidのToast連打防止

2019年5月16日

Toastを連打防止するにはcancelメソッドを使用する

android.widget.Toastにはcancel()メソッドが用意されています。

これは、Toastが連続で呼び出された際に既に表示されているToastが

存在する場合はToastを消して再表示するためのメソッドです。

 

このcancel()メソッドを使用して、Toastを連打しても問題が起きない実装を行っていきます。

それでは、次の項をみていきましょう。

 

 

cancelメソッドを使用する例

下記のコードではToastの処理をつかさどるToastMasterクラスを実装しています。

Toastを使用するActivityやFragmentでToastMasterクラスをインポートして使用してください。

public class ToastMaster extends Toast{
    private static Toast sToast = null;
    public ToastMaster(Context context) {
        super(context);
    }
    @Override
    public void show() {
        ToastMaster.setToast(this);
        super.show();
    }
    public static void setToast(Toast toast) {
        if (sToast != null){
            sToast.cancel();
            sToast = toast;
        }
    }
    public static void cancelToast() {
        if (sToast != null){
            sToast.cancel();
            sToast = null;
        }
    }
}

Toastを使用する際のコード

ToastMaster.makeText(this, "表示する文言", ToastMaster.LENGTH_SHORT).show();