我尝试从MapView的AsyncTask更新UI。经过多次试验,我不断收到此异常错误。我已经把try / catch放在了大部分地方,但我仍然得到错误。
这是Logcat错误:
05-20 16:19:22.273: E/AndroidRuntime(26776): java.lang.IndexOutOfBoundsException: Invalid index 2, size is 0
05-20 16:19:22.273: E/AndroidRuntime(26776): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
05-20 16:19:22.273: E/AndroidRuntime(26776): at java.util.ArrayList.get(ArrayList.java:308)
05-20 16:19:22.273: E/AndroidRuntime(26776): at org.osmdroid.views.overlay.ItemizedOverlay.getItem(ItemizedOverlay.java:158)
05-20 16:19:22.273: E/AndroidRuntime(26776): at org.osmdroid.views.overlay.ItemizedOverlay.drawSafe(ItemizedOverlay.java:125)
05-20 16:19:22.273: E/AndroidRuntime(26776): at org.osmdroid.views.overlay.SafeDrawOverlay.draw(SafeDrawOverlay.java:85)
05-20 16:19:22.273: E/AndroidRuntime(26776): at org.osmdroid.views.overlay.OverlayManager.onDraw(OverlayManager.java:141)
05-20 16:19:22.273: E/AndroidRuntime(26776): at org.osmdroid.views.MapView.dispatchDraw(MapView.java:1024)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13357)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13404)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.draw(View.java:14182)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13357)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13404)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13300)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13404)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13300)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13404)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13300)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13404)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13300)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13404)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13300)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13404)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13300)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.View.getDisplayList(View.java:13404)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1570)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1449)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2381)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2253)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1883)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.Choreographer.doCallbacks(Choreographer.java:574)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.Choreographer.doFrame(Choreographer.java:544)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.os.Handler.handleCallback(Handler.java:733)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.os.Handler.dispatchMessage(Handler.java:95)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.os.Looper.loop(Looper.java:136)
05-20 16:19:22.273: E/AndroidRuntime(26776): at android.app.ActivityThread.main(ActivityThread.java:5017)
答案 0 :(得分:0)
对于我可以从日志中读取的内容,您正在尝试访问一个还没有长度的数组。在创建数组时或在进行访问之前,您需要通过赋予它一定的长度来使其初始化。在Java中,它看起来像这样:
int [] arrayExcample;
arrayExcample = new int [10];
此数组现在包含总共10个用于整数值的空闲“空格”。如果您想要其他类型的数据,只需用它替换两个“int”。
如果您想缩短代码,您还可以使用以下内容(具体取决于上下文)来实现您的数组:
int [] arrayExcample = new int [10];