获取错误:android.view.ViewRoot $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图

时间:2015-04-30 10:19:10

标签: android

try {
    URL rssUrl = new URL("http://blog.nerdability.com/2013/03/tech-building-rss-reader-android-app.html");
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser saxParser = factory.newSAXParser();
    XMLReader xmlReader = saxParser.getXMLReader();
    RSSHandler rssHandler = new RSSHandler();
    xmlReader.setContentHandler(rssHandler);
    InputSource inputSource = new InputSource(rssUrl.openStream());
    xmlReader.parse(inputSource);

} catch (IOException e) {
    e.printStackTrace();
    rss.setText("NETWORK ERROR 01");
} catch (SAXException e) {
    e.printStackTrace();
    rss.setText("NETWORK ERROR 02");
} catch (ParserConfigurationException e) {
    e.printStackTrace();
    rss.setText("NETWORK ERROR 03");
}
//   rss.setText(rssResult);
return null;

我添加了这部分代码doInBackground,我得到了android.view.ViewRoot $ CalledFromWrongThreadException:然后应用程序崩溃了。

1 个答案:

答案 0 :(得分:0)

我猜你在catch中使用的变量rss是你布局中的一个视图。

如果我是正确的,你不能在doInBackground方法中设置文本,而是在该方法中返回该文本并在下一个setp中执行,onPostExecute,此方法从doInBackground接收结果,因此您可以使用在那里输入字符串并在视图中设置文本。

查看AsyncTask中的更多信息。