从网上找的方法如下
public class CustomToast {
private static Toast mToast;
private static Handler mHandler = new Handler();
private static Runnable r = new Runnable() {
public void run() {
mToast.cancel();
mToast = null;
}
};
public static void showToast(Context mContext, String text, int duration) {
mHandler.removeCallbacks(r);
if (mToast != null){
mToast.setText(text);
} else{
mToast = Toast.makeText(mContext, text, duration);
}
mHandler.postDelayed(r, duration);
mToast.show();
}
public static void showToast(Context mContext, int resId, int duration) {
showToast(mContext, mContext.getString(resId), duration);
}
}
刚学android 对线程不熟 这个方法点击后 toast并没有出现 什么原因呢 是不是原因是线程在run的时候不能执行.removeCallbacks()方法?求指点
public class CustomToast {
private static Toast mToast;
private static Handler mHandler = new Handler();
private static Runnable r = new Runnable() {
public void run() {
mToast.cancel();
mToast = null;
}
};
public static void showToast(Context mContext, String text, int duration) {
mHandler.removeCallbacks(r);
if (mToast != null){
mToast.setText(text);
} else{
mToast = Toast.makeText(mContext, text, duration);
}
mHandler.postDelayed(r, duration);
mToast.show();
}
public static void showToast(Context mContext, int resId, int duration) {
showToast(mContext, mContext.getString(resId), duration);
}
}
刚学android 对线程不熟 这个方法点击后 toast并没有出现 什么原因呢 是不是原因是线程在run的时候不能执行.removeCallbacks()方法?求指点
解决方案
30
这一句不需要mHandler.postDelayed(r, duration);
20
系统的Toast会自动消失不用你去手动去让他消失。对于cancel()方法,当Toast没消失的时候你调用会消失,而当Toast已经消失你调用那么Toast不会再显示出来了。