登录 / 注册
Toast 在activity关闭后,还在显示的问题解决
发布时间:2017-09-13 11:20:26 查看:2587

整理了一下关于Toast提示的相关知识。
其中,有关于Toast在activity关闭后仍然显示的问题,找到了其中的一个办法,对应toast.show();方法的toast.cancel();

具体代码:

1
2
3
4
5
6
7
//oncreate方法中弹出toast提示
Toast toast = null;
if(toast == null){
    toast = Toast.makeText(mContext,"这里是toast提示",Toast.LENGTH_SHORT);   
}
 
toast.show();//在这里弹出toast提示

在activity被挂起的时候,对弹出的toast提示进行处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
 * 处理onStop方法,
 * */
@Override
protected void onStop() {
    super.onStop();
 
    toast.cancel();
 
}
 
 
/**
 * 处理onPause方法
 * */
@Override
protected void onPause() {
    super.onPause();
    toast.cancel();
}
 
/**
 * 处理onDestory方法
 * */
@Override
protected void onDestroy() {
    super.onDestroy();
    toast.cancel();
 
}

这样在activity被挂起的时候,toast提示也就消失了.但是,单纯的这么做就必须要在每一个activity中都加入以上代码,也不便于管理.


1.创建一个Toast提示的工具类:ToastUtils 

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class ToastUtils {
 
private static Toast mToast,mToastNormal;
private static View view;
 
/**
 * 普通的toast提示
 * */
public static void showNOrmalToast(Context mContext,String message){
 
    ToastUtils.cancel();
 
    if(mToastNormal == null){
        mToastNormal = Toast.makeText(mContext, message, Toast.LENGTH_SHORT);
    }
 
    mToastNormal.show();
 
    }
/**
*toast取消
*/
public static void cancel(){
 
    if(mToast != null){
        mToast.cancel();
        mToast = null;
    }   
 
}
 
}

2.最新创建一个ActivityBase类继承自Activity,在里面设置cancel()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//代码如下
package com.example.ademo.utils;
 
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Window;
 
/**
 * @author EL
 *  重写activity类
 *  1.去掉状态栏
 *  2.重新处理onstop.onpause,ondestory方法
 *  3.
 */
public class ActivityBase extends Activity{
 
protected Context mContext;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 
    requestWindowFeature(Window.FEATURE_NO_TITLE);
 
    mContext = ActivityBase.this;
 
}
 
 
 
/**
 * 处理onStop方法,
 * */
@Override
protected void onStop() {
    super.onStop();
 
    ToastUtils.cancel();
 
}
 
 
/**
 * 处理onPause方法
 * */
@Override
protected void onPause() {
    super.onPause();
    ToastUtils.cancel();
}
 
/**
 * 处理onDestory方法
 * */
@Override
protected void onDestroy() {
    super.onDestroy();
    ToastUtils.cancel();
 
}
}


这样在其他的activity继承自ActivityBase,然后就可以随时调用ToastUtils.showNormalToast()方法了,

代码:

1
2
3
//调用toast
ToastUtils.showNormalToast(mContext,"这里是普通的normal调用");
//...

如上就实现了activity关闭后,toast提示也随之关闭。

宁夏银川舜新艺软件开发
ShunXinyi Soft develop
主要经营
软件开发,网站制作,网页设计,移动应用(安卓、苹果),微信,微网站,
FLASH动画,电子商务,计算机软硬件及网络设备等。
电话:18695132945 QQ:23923027
舜新艺软件开发 宁ICP备16001093号-1 宁公网安备 64010602000809号