欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android Toast 防止重复弹出

程序员文章站 2022-08-20 16:02:05
如果有这样一个场景,用户不停的狂点某一个按钮,而这时这个按钮刚好就会触发一个Toast弹框,是不是就会出现,Toast不消失的现象。如果这个时候你是这样的现象,那么你的Toast一定是这样写的Toast.makeText(CrashApplication.getApplication(),text,duration).show();这样写就会造成Toast重复弹框的问题。现在有这样一个工具类,可以防止Toast重复弹框,直接上代码importandroid.os.Handler;......

如果有这样一个场景,用户不停的狂点某一个按钮,而这时这个按钮刚好就会触发一个Toast弹框,是不是就会出现,Toast不消失的现象。如果这个时候你是这样的现象,那么你的Toast一定是这样写的

Toast.makeText(CrashApplication.getApplication(), text, duration).show();

 

这样写就会造成Toast重复弹框的问题。

现在有这样一个工具类,可以防止Toast重复弹框,直接上代码

import android.os.Handler;

import android.os.Looper;

import android.widget.Toast;

 

import com.bsit.qm702.CrashApplication;

 

 

/**

 * toast显示类,可以在子线程直接调用

 * 封装的Toast类

 */

public class ToastUtil {

    private static Toast toast;

 

    public static Handler mHandler = new Handler(Looper.getMainLooper());

 

    public static void showToast(String text) {

        showToast(text, Toast.LENGTH_SHORT);

    }

 

    public static void showToast(final String text, final int duration) {

        if (Looper.myLooper() == Looper.getMainLooper()) {

            show(text, duration);

        } else {

            mHandler.post(new Runnable() {

                @Override

                public void run() {

                    show(text, duration);

                }

            });

        }

    }

 

    private static void show(String text, int duration) {

        if (toast != null) {

            toast.cancel();

        }

        toast = Toast.makeText(CrashApplication.getApplication(), text, duration);

        toast.show();

    }

 

}

 

 

 

而且这个Toast可以在线程中使用。

本文地址:https://blog.csdn.net/wxj280306451/article/details/108979696

相关标签: android