解决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之后如果 逆袭

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...

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

分类: Android2012-09-18 14:04 222人阅读 评论(0) 收藏 举报 nullstringexceptionthreadandroidclass 目录(?)[+...

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

Toast invisible to user 或 go ahead 关于Toast在一些手机和Pad上不显示的解决方法: 1、Toast.makeText(Context, "这是一个Toas...

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

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

Toast显示过程详解

目录: 前言 总结 源码分析 Toast的创建 加入NMS的Toast队列 NMS回调TN TN调用WMS显示Toast NMS回调TN TN调用WMS删除Toast前言上次看到有人说Toast属于U...

Toast 多次显示问题

关于Toast 感觉这里还是有点坑的。 比如普通使用的时候,你在按钮处设置点击toast一下。点击一次他就会显示一条。点击两次它又会show一下。那点击多次。就会导致显示的时间变得漫长。这不仅很影响...

android中Toast重复显示问题解决

android中Toast重复显示每次都延时累计造成提示框一直显示完累计的时间才退去的问题。  在使用Toast作为提示信息时,Toast会显示在屏幕下方,一般用来提示用户的误操作。当用户在某些情况...

android使用Toast时出现的错误

前不久在做android项目的时候遇到的问题,分享出来希望能帮到大家。错误代码如下: 解决方法1:在调用Toast(或者AlertDialog)的地方的前面加上Looper.prepare(...
  • Alan_TW
  • Alan_TW
  • 2017年10月31日 13:13
  • 59

Android实现多条Toast快速显示(强制中止上一条Toast的显示)

Android实现多条Toast快速显示 Toast多用于我们开发人员调试使用,有时候也作为给用户的弱提示使用,我们常用的方法是 Toast.makeText(this, "弹出Toast", T...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Toast不断显示问题
举报原因:
原因补充:

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