关于Toast在页面重复显示,非本页面显示

最近测试部的同事,提出的bug,说Toast显示太不好了,如果频繁点击一个button,Toast会长时间的显示,而且即使切换页面,Toast消息还在显示,这样就造成了显示错乱。虽然不是什么大的bug,但是给用户的体验确实不好,所以,就在此献上博文一篇,来解决此问题,同时做个记录,防止忘记。在此,非常感谢,测试部的同事们提出的问题,你们的不满意,是我进步的动力。

下面贴出核心代码:

package com.example.acer.toastdemo;

import android.content.Context;
import android.os.Handler;
import android.widget.Toast;

/**
 * 创建时间:2015/6/27 23:17
 * 项目名称:ToastDemo
 * 类说明:Toast工具,解决Toast重复显示,非本页面显示
 * 创建人: lc
 *
 * @since JDK 1.7.0
 * Copyright (c) lc-版权所有
 */
public class CustomToast {

    /**
     * the unit is ms
     */
    public static final int LENGTH_LONG = 3500;
    public static final int LENGTH_INT = 2000;
    public static final int LENGTH_SHORT = 1000;
    public static final int LENGTH_BYTE = 500;
    /**Toast显示的最长时间是Toast.LENGTH_LONG*/
    private static Toast mToast;
    private static final Handler mHandler = new Handler();
    private static final Runnable mRunnable = new Runnable() {
        @Override
        public void run() {
            mToast.cancel();
        }
    };

    /**
     * Toast the string
     *
     * @param context
     * @param string
     * @param duration
     */
    public static void makeText(Context context, String string, int duration) {
        mHandler.removeCallbacks(mRunnable);
        if (mToast != null) {
            mToast.setText(string);
        } else {
            mToast = Toast.makeText(context, string, Toast.LENGTH_LONG);
        }
        mHandler.postDelayed(mRunnable, duration);
        mToast.show();

    }
    /**在此提供两个makeText方法的重载,与Toast.makeText对应*/

    /**
     * Toast the string
     *
     * @param context
     * @param resId
     * @param duration
     */
    public static voidmakeText(Context context, int resId, int duration) {
        makeText(context, context.getString(resId), duration);
    }


    /**
    *cancel Toast
    */
    public static void cancel() {
        if (mToast != null) {
            mToast.cancel();
        }
    }

}

如有不妥之处,还望指正,继续修改。此demo,是android studio版本的,demo地址:http://download.csdn.net/detail/baidu_17508977/8846261

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值