public class ToastUtil {
private static Toast toast = null;
public static void showToast(Context context,String content){
if (toast != null){
toast.cancel();
}
Looper.prepare();
toast = Toast.makeText(context,content,Toast.LENGTH_SHORT);
toast.show();
Looper.loop();
}
public static void showToast(Context context,int resid){
showToast(context,context.getString(resid));
}
}
這是我封裝的Toast的代碼,其實也就是在網上下載的,我是定義了一個接口,接口裡面會用到這個方法,然後接口的方法會在Asynctask中使用,有的時候就會報錯toast Can't create handler inside thread that has not called Looper.prepare(),然後在網上搜索,網上的說在 toast = Toast.makeText(context,content,Toast.LENGTH_SHORT);
toast.show();前面加上Looper.prepare();後面加上 Looper.loop();(剛開始我是沒有加的),然後就會報錯Only one Looper may be created per thread。。。
這是為什麼啊?
asynctask的實現機制在不同API版本裡是有區別的,你使用的是哪個版本的?而且你是在asynctask的哪個回調方法裡showtoast的?