整理了一下关于Toast提示的相关知识。
其中,有关于Toast在activity关闭后仍然显示的问题,找到了其中的一个办法,对应toast.show();方法的toast.cancel();
具体代码:
//oncreate方法中弹出toast提示 Toast toast = null; if(toast == null){ toast = Toast.makeText(mContext,"这里是toast提示",Toast.LENGTH_SHORT); } toast.show();//在这里弹出toast提示
在activity被挂起的时候,对弹出的toast提示进行处理。
/** * 处理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
代码如下:
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()
//代码如下 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()方法了,
代码:
//调用toast ToastUtils.showNormalToast(mContext,"这里是普通的normal调用"); //...
如上就实现了activity关闭后,toast提示也随之关闭。