解决Toast不断显示问题

原创 2015年07月07日 17:46:12

    Toast是Android中用来显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点,而且Toast显示的时间有限,过一定的时间就会自动消失。


Toast一般用来提示用户的误操作。但是如果同时显示多个Toast信息提示框,系统会将这些Toast信息提示框放到队列中,等前一个Toast信息提示框关闭后才会显示下一个Toast信息提示框。当用户在某些情况下,误操作多次时,使用 Toast提示会出现很多个Toast依次显示,在页面上停留很长时间,用户体验很不好!
为了解决这一问题,每次创建Toast时先做一下判断,如果前面有Toast在显示,只需调用Toast中的setText()方法将要显示的信息替换即可。

public class ToastUtil {

	private static Toast mToast;

	public static void showToast(Context context, CharSequence charSequence) {
		View mView = LayoutInflater.from(context).inflate(
                R.layout.top_tips_pop, null);
		TextView popTips = (TextView) mView.findViewById(R.id.pop_text); 
		popTips.setText(charSequence);
		
		if(mToast == null){
			mToast = new Toast(context);
		}
		mToast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 10);
		mToast.setDuration(Toast.LENGTH_SHORT);
		mToast.setView(mView);
		mToast.show();
	}
}

注意:每次显示都需要重新获取View,不然会报:This Toast was not created with Toast.makeText()错误。

top_tips_pop.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="756dp"
    android:layout_height="70dp"
    android:gravity="top"
    android:layout_marginTop="1dp"
    android:background="@drawable/pop_bg"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/pop_text"
        android:layout_width="756dp"
        android:layout_height="70dp"
        android:text="@string/lowBattaryTip"
        android:gravity="center_horizontal"
        android:textSize="28sp"
        android:singleLine="true"
      />

</LinearLayout>
版权声明:本文为博主原创文章,未经博主允许不得转载。

【经验小谈】android4.2之后Toast定义的一个特点This Toast was not created with Toast.makeText()

android4.2之后如果 逆袭
  • u013017597
  • u013017597
  • 2014年06月07日 16:13
  • 2833

view not attached to windows manager与This Toast was not created with Toast.makeText()

public class Ex04_1Activity extends Activity {     EditText editText; TextView textView;     @Ov...
  • h183288132
  • h183288132
  • 2015年08月12日 11:45
  • 556

程序不报错但无法运行

今天早上下午一直在处理这个问题——程序不报错但是无法运行。将主要的业务代码注释后,能显示第一个界面,但取消注释后运行会弹出“停止运行”的框,令我疑惑的是前两个星期都没有任何问题,完全能够运行,请各位指...
  • KiddWon
  • KiddWon
  • 2015年07月14日 17:16
  • 1131

关闭toast权限后自定义解决方式

前言 不知道大家是否遇到了当你们的App在5.0以上系统中被用户关闭消息通知后(其实用户本身只是想关闭Notification的,猜测),系统的Toast也神奇的无法显示。当然这个问题并不复杂,...
  • kelinyan
  • kelinyan
  • 2016年12月19日 19:27
  • 659

笔记 - 自定义toast 小提示弹框

项目中常用到一些小组件,如toast/alert 弹框,关于toast提示框,貌似一般在移动端说得比较多。。。嗯,不管了,差不多的意思,项目中就叫它toast提示框。(关于移动端弹框, 参考:APP提...
  • qq_39108466
  • qq_39108466
  • 2017年11月10日 17:24
  • 121

Toast——多次点击只显示一次解决方案

分类: Android2012-09-18 14:04 222人阅读 评论(0) 收藏 举报 nullstringexceptionthreadandroidclass 目录(?)[+...
  • goodding
  • goodding
  • 2013年04月12日 12:22
  • 10150

解决Toast不显示问题 Toast invisible to user . go ahead

Toast invisible to user 或 go ahead 关于Toast在一些手机和Pad上不显示的解决方法: 1、Toast.makeText(Context, "这是一个Toas...
  • u012846783
  • u012846783
  • 2015年12月07日 13:31
  • 6938

Android中用Toast.cancel()方法优化toast内容的显示

产品在测试过程中发现一个bug,就是测试人员不停的疯狂的点击某个按钮,触发了toast以后,toast内容会一直排着队的显示出来,不能很快的消失。这样可能会影响用户的使用。 看到Toast有一个ca...
  • arui319
  • arui319
  • 2011年11月29日 10:48
  • 13099

Toast显示过程详解

目录: 前言 总结 源码分析 Toast的创建 加入NMS的Toast队列 NMS回调TN TN调用WMS显示Toast NMS回调TN TN调用WMS删除Toast前言上次看到有人说Toast属于U...
  • Andersen_
  • Andersen_
  • 2015年10月12日 00:37
  • 1484

Edittext 监听输入完成

最近项目中有个需求,更改标题判断输入结束调用API更改标题。开始直接设置的TextWatcher,然后在afterTextChanged 事件里调用API更改标题,然后发现每输入一个字都会调用一次A...
  • zhengkaihong
  • zhengkaihong
  • 2016年01月22日 15:39
  • 3373
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Toast不断显示问题
举报原因:
原因补充:

(最多只允许输入30个字)