首先,Toast封装:
public class ToastUtils {
private static Toast toast;
private static Application sContext;
public static void init(Application application) {
sContext = application;
}
public static void showShort(CharSequence sequence) {
if (toast == null) {
toast = Toast.makeText(sContext, sequence, Toast.LENGTH_SHORT);
} else {
toast.setText(sequence);
toast.setDuration(Toast.LENGTH_SHORT);
}
toast.show();
}
public static void showLong(CharSequence sequence) {
if (toast == null) {
toast = Toast.makeText(sContext, sequence, Toast.LENGTH_LONG);
} else {
toast.cancel();
toast.setDuration(Toast.LENGTH_LONG);
}
toast.show();
}
}
使用:
在自定义Application 中 初始化:
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
// Toast工具类
ToastUtils.init(this);
}
/**
* 获取全局上下文
*/
public static Context getContext() {
return context;
}
}
然后,就可以随意使用了:
ToastUtils.showLong("大家好");
到这里基本就结束了。
但是,在使用的时候,发现了一个问题:
如果连续多次点击显示Toast 的话,之后再点击,会一段时间不显示。
解决:
public static void showShort(CharSequence sequence) {
if (toast == null) {
toast = Toast.makeText(sContext, sequence, Toast.LENGTH_SHORT);
} else {
//更正
toast.cancle();
toast = Toast.makeText(sContext, sequence, Toast.LENGTH_LONG);
toast.setDuration(Toast.LENGTH_SHORT);
}
toast.show();
}
加上:toast = Toast.makeText(sContext, sequence, Toast.LENGTH_LONG); 这句话。
重新获取 Toast 对象,就不会有这个问题了