如何解决android Toast重复显示

Toast是一种简易的消息提示框,它无法获取焦点,按设置的时间来显示完以后会自动消失,一般用于帮助或提示。

先给大家分享下我的解决思路:

不用计算Toast的时间之类的,就是定义一个全局的成员变量Toast, 这个Toast不为null的时候才去make,否则直接setText.为了按返回键后立即使Toast不再显示,重写父类Activity的onBackPressed()方法里面去cancel你的Toast即可.

代码:

private Toast mToast;
public void showToast(String text) {
if(mToast == null) {
mToast = Toast.makeText(TestActivity.this, text, Toast.LENGTH_SHORT);
} else {
mToast.setText(text);
mToast.setDuration(Toast.LENGTH_SHORT);
}
mToast.show();
}
public void cancelToast() {
if (mToast != null) {
mToast.cancel();
}
}
public void onBackPressed() {
cancelToast();
super.onBackPressed();
} 

下面介绍下解决Android Toast重复显示等待时间过长的问题

当触发点击事件显示toast信息时,如果设置了时间长短类型为LENGTH_LONG,虽然回到后台运行,但是依然会显示toast信息,尤其是当连续点击时,toast就会排队等待直到所有toast显示完毕,这种界面的用户体验是很差的。

→ 1 toast 2 toast 3 toast 4 toast 5 toast →

为了避免这种问题,可以再toast信息显示的地方加个判断,方法如下:

private Context mcontext;
private Toast mtoast;
if(mtoast!=null)
{
mtoast.setText(R.string.neterror);
}
else
{
/*
* 第一个参数:当前的上下文环境,用this或getApplicationContext()表示。
* 第二个参数:显示的字符串,用R.string表示。
* 第三个参数:显示的时间长短。用LENGTH_LONG(长)或LENGTH_SHORT(短)表示,也可以用毫秒。
*/
mtoast=Toast.makeText(mcontext,R.string.neterror, Toast.LENGTH_SHORT);
}
mtoast.show(); //显示toast信息

另外,还可以通过设置Toast的其他属性来设计自己风格的Toast消息框。

(0)

相关推荐

  • Android 更改 Toast 的默认位置方法

    Android中Toast的默认位置在屏幕靠近底部的位置,这个默认位置有时候并不合适.比如页面上内容较少时,内容一般集中在屏幕上半部分,用户的注意力也集中在屏幕上半部分,默认位置的Toast用户可能没有注意到.还有可能是默认位置的Toast被用户的手挡住了.实践中感觉将Toast显示在屏幕的中部或中上部会比较好.如何修改Toast的默认位置呢?下面做一个简单的例子来演示一下. 先上截图: 布局文件activity_toast.xml代码如下: <?xml version="1.0"

  • Android编程实现Toast自定义布局简单示例

    本文实例讲述了Android编程实现Toast自定义布局的方法.分享给大家供大家参考,具体如下: 不知道各位客官是不是觉得系统的toast的信息很难看呢,默认的但黑色背景,毫无色彩. 那么接下来我就教大家用最简单的方式自定义toast布局吧. 首先加载一个自定义的布局 LayoutInflater inflater = context.getLayoutInflater(); View view=inflater.inflate(R.layout.toast_info, null); 然后找到里

  • Android编程实现自定义toast示例

    本文实例讲述了Android编程实现自定义toast.分享给大家供大家参考,具体如下: 效果图: 代码: //自定义布局的toast customViewToast.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast toast = Toast.makeText(ToastTest.this, "top", Toast.LENGTH_SHORT); /

  • Android Toast通知用法实例详解

    本文实例讲述了Android Toast通知用法.分享给大家供大家参考,具体如下: Toast在手机屏幕上向用户显示一条信息,一段时间后信息会自动消失. 1.默认用法 复制代码 代码如下: Toast.makeText(getApplicationContext(), "默认Toast样式",Toast.LENGTH_SHORT).show(); 2.Fragment中的用法 复制代码 代码如下: Toast.makeText(getActivity(),"网络连接错误,请检

  • Android Toast的用法总结(五种用法)

    Toast大家都很熟,不多说.直接上图上代码.     具体代码如下: main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layou

  • 分享Android中Toast的自定义使用

    1.Toast源码分析 老规矩,我们先去看Toast的源码. Toast有两种显示布局方式,一种最常见调用Toast.makeText()  ,看源码是这样写的 public static Toast makeText(Context context, CharSequence text, @Duration int duration) { Toast result = new Toast(context); LayoutInflater inflate = (LayoutInflater) c

  • 超简单实现Android自定义Toast示例(附源码)

    Bamboy的自定义Toast,(以下称作"BToast") 特点在于使用简单, 并且自带两种样式: 1)普通的文字样式: 2)带图标样式. 其中图标有√和×两种图标. BToast还有另外一个特点就是: 系统自带Toast采用的是队列的方式,当前Toast消失后,下一个Toast才能显示出来: 而BToast会把当前Toast顶掉, 直接显示最新的Toast. 那么,简单三步,我们现在就开始自定义一下吧! (一).Layout: 要自定义Toast, 首先我们需要一个XML布局. 但

  • 如何解决android Toast重复显示

    Toast是一种简易的消息提示框,它无法获取焦点,按设置的时间来显示完以后会自动消失,一般用于帮助或提示. 先给大家分享下我的解决思路: 不用计算Toast的时间之类的,就是定义一个全局的成员变量Toast, 这个Toast不为null的时候才去make,否则直接setText.为了按返回键后立即使Toast不再显示,重写父类Activity的onBackPressed()方法里面去cancel你的Toast即可. 代码: private Toast mToast; public void sh

  • 解决Android SearchView不显示搜索icon的问题

    背景: 之前碰到了一个页面展示问题,SearchView放在Toolbar里面,展示在页面顶部,发现进入这个页面后,左上角是箭头图标(表示点击返回),中间区域就是搜索栏,不过看到会显示搜索icon

  • Android Toast自定义显示时间

    Toast是Android中使用频率较高的弹窗提示手段,使用起来简单.方便.常规使用方法这里不做说明,继前一篇博客<Android中Toast全屏显示> ,其中抛砖引玉的给出一个简单的实现Toast全屏显示的方法后,发现无法控制Toast的显示时长.虽然Toast中有setDuration(int duration)接口,但是跟踪代码发现,设置的时间没起作用,只有系统默认的两个时间LENGTH_DURATION = 3500毫秒,SHORT_DURATION = 2000毫秒.也就是说,无论我

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

    产品在测试过程中发现一个bug,就是测试人员不停的疯狂的点击某个按钮,触发了toast以后,toast内容会一直排着队的显示出来,不能很快的消失.这样可能会影响用户的使用. 看到Toast有一个cancel()方法: 复制代码 代码如下: void cancel() Close the view if it's showing, or don't show it if it isn't showing yet. 做程序员的,基本一看api就知道,用这个可以取消上一个toast的显示,然后显示下一

  • Android 5.0以上Toast不显示的解决方法

    原因分析 用户使用android 5.0以上的系统在安装APP时,将消息通知的权限关闭掉了.实际上用户本意只是想关闭Notification,但是Toast的show方法中有调用INotificationManager这个类,而这个类在用户关闭消息通知权限的同时被禁用了,所以我们的吐司无法显示. Toast.show() 效果图 自定义Toast(上)与Toast(下)比对 问题解决 既然系统不允许我们调用Toast,那么我们就自立门户--自己写一个Toast出来.我们总体的思路是:在Activ

  • android自定义Toast设定显示时间

    开发android的同学可能会抱怨Toast设定显示的时长无效,只能是Toast.LENGTH_LONG 或者Toast.LENGTH_SHORT 之一,为了解决这些办法,有多种实现方式: 1.使用定时器,定时调用show()方法. 2.使用CountDownTimer类,也是调用show()方法. 3.使用WindownManager类实现. 本文使用方法三进行实现,难度不大,直接看代码吧. package com.open.toast; import android.content.Cont

  • Android 文件夹显示红色叹号的解决方法(必看)

    有感叹号,说明有的文件损坏或丢失了 解决方法: 右击工程,Build Path..->Configure Build Path...->Java Build Path 可以看到引用的jar包,看看是不是带x了 不用的话就移除,要用的引用回正确路径就可以了 以上这篇Android 文件夹显示红色叹号的解决方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Android 解决ScrollView嵌套CridView显示问题

    Android 解决ScrollView嵌套CridView显示问题 由于GridView是可滑动的控件,嵌套在ScrollView下时需要重写onMeasure方法. public class MyGridView extends GridView{ public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Context context) { supe

  • Android编程实现Toast只显示最后一条的方法

    本文实例讲述了Android编程实现Toast只显示最后一条的方法.分享给大家供大家参考,具体如下: 在做Android开发中,时不时的可能会用到Toast,但用Toast的时候,连续使用会存在一个问题,就是一条条显示Toast.而不是直接显示最后一条.因此,根据此需求,现在写了ToastUtil这个类,该类中有三个方法供选择. ToastUtil.Java import android.content.Context; import android.graphics.PixelFormat;

  • 解决android关于打开虚拟机时右侧工具栏不显示的问题

    一开始我就纳闷了,怎么调试都只是一个光溜溜的界面,右侧的工具栏都没有 如图: 就一个光秃秃的界面,什么都没有,这就对调试很不方便 于是我就试了试各种方法,然而并没有什么卵用. 后来一次无意之后发现我好像皮肤没选中即: 这就是问题的关键所在,当你没有选择的皮肤为no skin时,它的工具栏就不会出来 所以解决办法是: 将皮肤随便选一个就行了,但就是不能选no skin 以上这篇解决android关于打开虚拟机时右侧工具栏不显示的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多

随机推荐