整理了一下关于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提示也随之关闭。