我已經搜索了許多類似的問題和答案,但我仍然無法理解爲什麼我的代碼拋出這個錯誤。獲取無法在未調用Looper.prepare()和代碼的Android線程中創建處理程序4
12-27 12:57:57.908: W/dalvikvm(465): Exception Ljava/lang/RuntimeException; thrown while initializing Landroid/os/AsyncTask;
12-27 12:57:57.908: W/dalvikvm(465): threadid=9: thread exiting with uncaught exception (group=0x40014760)
12-27 12:57:57.927: E/AndroidRuntime(465): FATAL EXCEPTION: Thread-10
12-27 12:57:57.927: E/AndroidRuntime(465): java.lang.ExceptionInInitializerError
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.baseballnews.NewsParser.fetchNews(NewsParser.java:137)
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.baseballnews.MLBNews.getLeagueNews(MLBNews.java:145)
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.baseballnewsreader.BaseballNewsReader.licenseCheckCompleted(BaseballNewsReader.java:45)
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.lm.LicenseMgr.respondFromCache(LicenseMgr.java:218)
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.lm.LicenseMgr.run(LicenseMgr.java:139)
12-27 12:57:57.927: E/AndroidRuntime(465): at java.lang.Thread.run(Thread.java:1020)
12-27 12:57:57.927: E/AndroidRuntime(465): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
12-27 12:57:57.927: E/AndroidRuntime(465): at android.os.Handler.<init>(Handler.java:121)
12-27 12:57:57.927: E/AndroidRuntime(465): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:595)
12-27 12:57:57.927: E/AndroidRuntime(465): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:595)
12-27 12:57:57.927: E/AndroidRuntime(465): at android.os.AsyncTask.<clinit>(AsyncTask.java:184)
12-27 12:57:57.927: E/AndroidRuntime(465): ... 6 more
有兩個困惑我這裏有:
- 我的代碼工作與Android 4.0,但得到了錯誤的所有「不能內螺紋已不叫Looper.prepare創建處理程序」較低的版本。
- 即使當我清空doInBackground()調用,因此它只返回一個「」,我仍然有錯誤。
我想從使用AsyncTask的Web服務中獲取一些消息並在視圖中顯示它們。這裏是我的基本代碼:
public class News {
...
new FetchXML().execute(url);
...
private class FetchXML extends AsyncTask<String,String,String> {
protected String doInBackground(final String... urls) {
String urlToOpen = urls[0];
URL url;
String inputLine = null;
String response = "";
URLConnection connection;
try {
String authStringEnc = b64encode("user:pass".getBytes());
url = new URL(urlToOpen);
connection = url.openConnection();
connection.setRequestProperty("Authorization", "Basic " + authStringEnc);
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
while ((inputLine = in.readLine()) != null) {
response += inputLine;
}
in.close();
} catch(MalformedURLException e) {
//
} catch(IOException e) {
//
}
return response;
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
NewsParser.this.parse(result);
}
}
NewsParser parse()方法分析xml並更新視圖。
我在這裏完全損失。任何幫助將不勝感激!
謝謝!
你有什麼證據表明你的問題是由這段代碼產生的?如果它來自堆棧跟蹤,查看堆棧跟蹤將會告訴您確切的失敗代碼行。 – CommonsWare 2011-12-28 00:52:30
感謝您的回覆!以下是我之前應該包含的堆棧跟蹤: – Luverious 2011-12-28 17:57:19
請通過編輯問題將您的堆棧跟蹤放入您的問題中。我們無法讀取您明顯嘗試發表評論的堆棧跟蹤。 – CommonsWare 2011-12-28 18:15:08