Toast连续出现多次的问题

移动开发 码拜 4年前 (2016-03-29) 387次浏览
从网上找的方法如下
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

引用:

很普通的一个调用
CustomToast.showToast(mContext, R.string.soft_update_no, Toast.LENGTH_SHORT);
和5楼说的
去掉这句mHandler.postDelayed(r, duration);
就可以了 但是不太懂 为什么

系统的Toast会自动消失不用你去手动去让他消失。对于cancel()方法,当Toast没消失的时候你调用会消失,而当Toast已经消失你调用那么Toast不会再显示出来了。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Toast连续出现多次的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)