Android项目中会经常用到Toast提醒,虽然很好用但也挺麻烦。比如一个项目比较大,或者一个类/activity代码比较多,有的时候用完了不想在提醒的时候发现根本不好找了,尤其是在debug版本时可能会有很多的toast,但是正式版不需要了也不好解决这个问题,那么问题来了,就没有一个好用Toast的工具类嘛?答案当然是有的嘛,代码就在下方,仅供提供参考,不足之处欢迎留言交流。谢谢!
import android.app.Activity;
import android.widget.Toast;
import com.mengpeng.MyApplication;
/**
* 创建: MengPeng
* 日期: 2017/3/2 , 下午10:30.
* 作用: 吐司弹窗工具类
*/
public class ToastUtils {
private static Toast toast;
private static boolean isDebugModule = true;
/**
* 根据所填的文本进行吐司提醒
*
* @param toastContent 吐司内容
*/
public static void showToast(String toastContent) {
if (toast == null && isDebugModule) {
toast.makeText(MyGetApplication.getContext(), toastContent, Toast.LENGTH_SHORT);
} else {
toast.setText(toastContent);
}
toast.show();
}
/**
* 根据所填的内容ID进行吐司提醒
*
* @param toastContentID 吐司内容ID
* @param isAlwaysShow 正式版本是否吐司提醒
*/
public static void showToast(int toastContentID, boolean isAlwaysShow) {
if (isAlwaysShow) {
String toastContent = MyGetApplication.getContext().getResources().getString(toastContentID);
if (toast == null) {
toast.makeText(MyGetApplication.getContext(), toastContent, Toast.LENGTH_SHORT);
} else {
toast.setText(toastContent);
}
toast.show();
}
}
/**
* 根据所填的文本进行吐司提醒
*
* @param toastContent 吐司内容
* @param isAlwaysShow 正式版本是否吐司提醒
*/
public static void showToast(String toastContent, boolean isAlwaysShow) {
if (isAlwaysShow) {
if (toast == null) {
toast.makeText(MyGetApplication.getContext(), toastContent, Toast.LENGTH_SHORT);
} else {
toast.setText(toastContent);
}
toast.show();
}
}
/**
* 根据所填的内容ID进行吐司提醒
*
* @param toastContentID 吐司内容ID
*/
public static void showToast(int toastContentID) {
String toastContent = MyGetApplication.getContext().getResources().getString(toastContentID);
if (toast == null && isDebugModule) {
toast.makeText(MyGetApplication.getContext(), toastContent, Toast.LENGTH_SHORT);
} else {
toast.setText(toastContent);
}
toast.show();
}
/**
* 在UI线程显示吐司消息
*
* @param toastContent 消息内容
* @param activity 目标Activity
*/
public static void showToastOnUIThread(final String toastContent, Activity activity) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (toast == null && isDebugModule) {
toast.makeText(MyGetApplication.getContext(), toastContent, Toast.LENGTH_SHORT);
} else {
toast.setText(toastContent);
}
toast.show();
}
});
}
/**
* 在UI线程中显示吐司消息
*
* @param toastContentID 消息ID
* @param activity 目标Activity
*/
public static void showToastOnUIThread(final int toastContentID, Activity activity) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
String toastContent = MyGetApplication.getContext().getResources().getString(toastContentID);
if (toast == null && isDebugModule) {
toast.makeText(MyGetApplication.getContext(), toastContent, Toast.LENGTH_SHORT);
} else {
toast.setText(toastContent);
}
toast.show();
}
});
}
/**
* 在UI线程中显示吐司消息
*
* @param toastContent 吐司内容
* @param isAlwaysShow 签名打包的正式版中是否显示消息
*/
public static void showToastOnUIThread(final String toastContent, final boolean isAlwaysShow, Activity activity) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (toast == null && isAlwaysShow) {
toast.makeText(MyGetApplication.getContext(), toastContent, Toast.LENGTH_SHORT);
} else {
toast.setText(toastContent);
}
toast.show();
}
});
}
/**
* 在UI线程中显示吐司消息
*
* @param toastContentID 吐司内容ID
* @param isAlwaysShow 签名打包的正式版中是否显示消息
*/
public static void showToastOnUIThread(final int toastContentID, final boolean isAlwaysShow, Activity activity) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
String toastContent = MyGetApplication.getContext().getResources().getString(toastContentID);
if (toast == null && isAlwaysShow) {
toast.makeText(MyGetApplication.getContext(), toastContent, Toast.LENGTH_SHORT);
} else {
toast.setText(toastContent);
}
toast.show();
}
});
}
}
Application中只需要写个getApplication方法即可,目的当然是为了获取Context啦。