Я искал много похожих вопросов и ответов здесь, но я все еще не могу понять, почему мой код выдает эту ошибку.
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.подготовить «ошибка для всех более низких версий.
- Даже когда я очистил вызов doInBackground (), чтобы он возвращал только« », я все еще получил ошибку.получить некоторые новости из веб-службы с помощью AsyncTask и показать их в представлении.Вот мой основной код:
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);
}
}
Метод parse () NewsParser анализирует xml и обновляет представление.
Я в полной потере здесь.Любая помощь будет принята с благодарностью!
Спасибо!