看过这篇文章才发现以前自己把Toast用烂了。
转载地址:http://blog.youkuaiyun.com/way_ping_li/article/details/8840955
不知道各位程序猿们在项目中有没有遇到这个问题:点击一个view弹出一个Toast,我们用的方法是Toast.makeText(context, "提示", Toast.LENGTH_SHORT).show(); 但是,细心的人发现了,如果频繁的点击这个view,会发现尽管我们退出了这个应用,还是会一直弹出提示,这显然是有点点小尴尬和恼人的。下面就给大家提供两种方式解决这个问题。
1.封装了一个小小的Toast:
- /**
- * 不循环提示的Toast
- * @author way
- *
- */
- public class MyToast {
- Context mContext;
- Toast mToast;
- public MyToast(Context context) {
- mContext = context;
- mToast = Toast.makeText(context, "", Toast.LENGTH_SHORT);
- mToast.setGravity(17, 0, -30);//居中显示
- }
- public void show(int resId, int duration) {
- show(mContext.getText(resId), duration);
- }
- public void show(CharSequence s, int duration) {
- mToast.setDuration(duration);
- mToast.setText(s);
- mToast.show();
- }
- public void cancel() {
- mToast.cancel();
- }
- }
2.两个直接调用的函数函数:可以放在在Activity中,在需要时直接调用showToast(String or int); 在Activity的onPause()中调用hideToast(),使得应用退出时,取消掉恼人的Toast。
- /**
- * Show a toast on the screen with the given message. If a toast is already
- * being displayed, the message is replaced and timer is restarted.
- *
- * @param message
- * Text to display in the toast.
- */
- private Toast toast;
- private void showToast(CharSequence message) {
- if (null == toast) {
- toast = Toast.makeText(this, message,
- Toast.LENGTH_LONG);
- toast.setGravity(Gravity.CENTER, 0, 0);
- } else {
- toast.setText(message);
- }
- toast.show();
- }
- /** Hide the toast, if any. */
- private void hideToast() {
- if (null != toast) {
- toast.cancel();
- }
- }
/**
* Toast统一管理类
*
* @author way
*
*/
public class T {
// Toast
private static Toast toast;
/**
* 短时间显示Toast
*
* @param context
* @param message
*/
public static void showShort(Context context, CharSequence message) {
if (null == toast) {
toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
// toast.setGravity(Gravity.CENTER, 0, 0);
} else {
toast.setText(message);
}
toast.show();
}
/**
* 短时间显示Toast
*
* @param context
* @param message
*/
public static void showShort(Context context, int message) {
if (null == toast) {
toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
// toast.setGravity(Gravity.CENTER, 0, 0);
} else {
toast.setText(message);
}
toast.show();
}
/**
* 长时间显示Toast
*
* @param context
* @param message
*/
public static void showLong(Context context, CharSequence message) {
if (null == toast) {
toast = Toast.makeText(context, message, Toast.LENGTH_LONG);
// toast.setGravity(Gravity.CENTER, 0, 0);
} else {
toast.setText(message);
}
toast.show();
}
/**
* 长时间显示Toast
*
* @param context
* @param message
*/
public static void showLong(Context context, int message) {
if (null == toast) {
toast = Toast.makeText(context, message, Toast.LENGTH_LONG);
// toast.setGravity(Gravity.CENTER, 0, 0);
} else {
toast.setText(message);
}
toast.show();
}
/**
* 自定义显示Toast时间
*
* @param context
* @param message
* @param duration
*/
public static void show(Context context, CharSequence message, int duration) {
if (null == toast) {
toast = Toast.makeText(context, message, duration);
// toast.setGravity(Gravity.CENTER, 0, 0);
} else {
toast.setText(message);
}
toast.show();
}
/**
* 自定义显示Toast时间
*
* @param context
* @param message
* @param duration
*/
public static void show(Context context, int message, int duration) {
if (null == toast) {
toast = Toast.makeText(context, message, duration);
// toast.setGravity(Gravity.CENTER, 0, 0);
} else {
toast.setText(message);
}
toast.show();
}
/** Hide the toast, if any. */
public static void hideToast() {
if (null != toast) {
toast.cancel();
}
}
}