程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> asynctask-關於 Toast 觸發android的線程問題

asynctask-關於 Toast 觸發android的線程問題

編輯:編程解疑
關於 Toast 觸發android的線程問題

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的?

qq_35071078
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved