项目中我们会经常用到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 ; }