项目中我们会经常用到Toast来显示提示信息或者错误信息。

/**
 * 类说明:toast 消息提醒
 * Author:gaobaiq
 * Date:2016/04/20
 */
public class ToastUtils {

    private static volatile Toast toast;

    public static void ToastMessage(Context cont, String msg) {
        if (cont == null || StringUtils.isEmptyString(msg)) {
            return;
        }
        showToast(cont, msg, Toast.LENGTH_LONG);
    }

    public static void ToastMessage(Context cont, int msg) {
        if (cont == null) {
            return;
        }
        showToast(cont, cont.getString(msg), Toast.LENGTH_LONG);
    }

    public static void ToastMessage(Context cont, String msg, int time) {
        if (cont == null || StringUtils.isEmptyString(msg)) {
            return;
        }
        showToast(cont, msg, time);
    }

    // 防止多次点击的时候一直在显示
    private static void showToast(Context context, String msg, int time) {
        if (toast == null) {
            synchronized (ToastUtils.class) {
                if (toast == null) {
                    toast = Toast.makeText(context.getApplicationContext(), "", Toast.LENGTH_LONG);
                }
            }
        }
        toast.setText(msg);
        toast.setDuration(time);
        toast.show();
    }
}

以上防止多次点击一直显示还可以用以下方法来处理

    private static String oldMsg ;  // 之前显示的内容 
    private static long oneTime = 0 ;  // 第一次时间
    private static long secTime = 0 ;  // 第二次时间
      
    
    public static void showToast(Context context,String message) {  
        if(toast == null){  
            toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);  
            toast.show() ;  
            oneTime = System.currentTimeMillis() ;  
        }else{  
            secTime = System.currentTimeMillis() ;  
            if(message.equals(oldMsg)){  
                if(secTime - oneTime > Toast.LENGTH_SHORT){  
                    toast.show() ;  
                }  
            }else{  
                oldMsg = message ;  
                toast.setText(message) ;  
                toast.show() ;  
            }  
        }  
        oneTime = twoTime ;  
    }