日期:2014-05-16  浏览次数:20758 次

解决Toast重复显示问题

Toast一般用来提示用户的误操作。但是如果同时显示多个Toast信息时,系统会将这些Toast信息放到队列中,等前一个Toast信息显示关闭后才会显示下一个Toast信息。当用户在某些情况下,误操作多次时,使用 Toast提示会出现很多个Toast依次显示,在页面上停留很长时间,用户体验不好!

?

package com.example.testtoast;

import android.content.Context;
import android.os.Handler;
import android.widget.Toast;
/**
?*
?* @Description: Toast工具類
?* @author lichuan
?* @date 2014-5-10??? 上午10:11:52
?* @version 2.0
?*/
public class MyToast {
???
??? private static Toast mToast;
??? private static Handler mHandler = new Handler();
???
??? private static Runnable runnable = new Runnable() {
??public void run() {
???mToast.cancel();
??}
?};

?public static void showToast(Context mContext, String text, int duration) {

??mHandler.removeCallbacks(runnable);//移除队列任务
??if (mToast != null)
???mToast.setText(text);
??else
???mToast = Toast.makeText(mContext, text, duration);
??
??mHandler.postDelayed(runnable, duration);
??mToast.show();
?}
?
?? //方法重載
?public static void showToast(Context mContext, int resId, int duration) {
??showToast(mContext, mContext.getResources().getString(resId), duration);
?}
?
}