Toast 在activity关闭后,还在显示的问题解决

Toast 在activity关闭后,还在显示的问题解决

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

你可能感兴趣的:(android)