Toast,在Android开发中常常会遇到,但是,我们总是会遇到一个问题,那便是当我们使用按钮监听弹出Toast的时候,假如不断点击按钮,将会不断地弹出Toast,而这一篇文章便是为了解决这个问题而编写的。
同时,为了节约app资源和方便使用,便使用单例模式来实现自定义Toast。
(1)建立MyToast类,并且定义以下成员变量,以及部分更改器:
private static final Object SYNC_LOCK = new Object(); private static Toast mToast; /** 上下文 */ public static Context context; public static Context getContext() { return context; } public static void setContext(Context context) { MyToast.context = context; }
(2)创建初始化Toast的方法:
/** * 获取toast环境,为toast加锁 * * @param context * @return */ private static void initToastInstance() { if (mToast == null) { synchronized (SYNC_LOCK) { if (mToast == null) { mToast = Toast.makeText(context, "", Toast.LENGTH_SHORT); } } } }
在这里使用了锁,并双重判断,保证了Toast的唯一性,避免出现了多个Toast。
(3)创建显示Toast的方法:
/** * 展示吐司 * * @param context * 环境 * @param text * 内容 */ public static void showToast(String text, Context context) { setContext(context); if (getContext() != null && text != null) { initToastInstance(); mToast.setDuration(Toast.LENGTH_SHORT); mToast.setText(text); mToast.show(); } }
(4)使用以下代码显示Toast。
MyToast.showToast("MyToast", MainActivity.this);
(5)运行效果:
无论点击多少次都是图中的效果,不会说多次点击之后,等一个Toast消失后,出现另外一个Toast。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-23 14:41:33