java - Android 解析 xml 文件时出错

标签 java android xml parsing

我已通过 xml 解析向我的应用程序添加了版本检查。

但是当我尝试执行它时,它会在我粘贴到此处的异常中运行:

11-03 19:21:36.809: E/AndroidRuntime(16531): FATAL EXCEPTION: main
11-03 19:21:36.809: E/AndroidRuntime(16531): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.lookedpath.firstlesson/com.lookedpath.firstlesson.Update}: android.os.NetworkOnMainThreadException
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2099)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.app.ActivityThread.access$600(ActivityThread.java:142)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.os.Looper.loop(Looper.java:137)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.app.ActivityThread.main(ActivityThread.java:4931)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at java.lang.reflect.Method.invokeNative(Native Method)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at java.lang.reflect.Method.invoke(Method.java:511)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at dalvik.system.NativeStart.main(Native Method)
11-03 19:21:36.809: E/AndroidRuntime(16531): Caused by: android.os.NetworkOnMainThreadException
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at java.net.InetAddress.getAllByName(InetAddress.java:214)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at com.lookedpath.firstlesson.XMLParser.getXmlFromUrl(XMLParser.java:35)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at com.lookedpath.firstlesson.Update.<init>(Update.java:24)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at java.lang.Class.newInstanceImpl(Native Method)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at java.lang.Class.newInstance(Class.java:1319)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
11-03 19:21:36.809: E/AndroidRuntime(16531):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2090)
11-03 19:21:36.809: E/AndroidRuntime(16531):    ... 11 more

您可以通过GitHub获取Eclipse项目: https://github.com/LookedPath/lookedpath_android_applications/tree/FirstApp/PrimaLezione

我应该做什么?

最佳答案

最好的方法是使用 AsyncTask。

http://developer.android.com/reference/android/os/AsyncTask.html

异步任务允许您在下载时与 UI 进行交互,而线程(或可运行)则不需要 让您与 UI 交互。

如果您需要在 UI 中进行更改,则需要创建一个处理程序并在该处理程序中运行更改,但 AsyncTask 会为您实现它。

关于java - Android 解析 xml 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212201/

相关文章:

java - 如何在圆形语音气泡内制作带有照片的 Google map 标记?

java - 在 Xquery 中读取文本文件

java - 基于逻辑构造对象类型——这可以做到吗?

用于对象初始化的 Java CLI 参数语法

java - JFrame 未抛出 IndexOutOfBoundsException

java - Google 图片搜索 API 最大结果大小

JAVA_OPTS 用于增加堆大小

android - 如何在我的游戏应用程序中禁用声音?

android - 将 XML 资源传递给 XMLReader

java - 即使使用 dp,布局也不适合屏幕截图