【问题标题】:IndexOutOfBoundsException when adding a Polygon to Map将多边形添加到地图时出现 IndexOutOfBoundsException
【发布时间】:2013-05-24 12:26:06
【问题描述】:

这是我的代码:

final PolygonOptions options = new PolygonOptions();
options.strokeColor(Color.argb(strokeAlpha, r, g, b));
options.fillColor(Color.argb(fillAlpha, r, g, b));
for (final Punto p : c.getPuntos()) {
    options.add(p.getLatLng());
}
map.getMap().addPolygon(options)

而且我不断收到此异常:

05-29 11:40:04.531: E/MapScreen_(11196): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
05-29 11:40:04.531: E/MapScreen_(11196):    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
05-29 11:40:04.531: E/MapScreen_(11196):    at java.util.ArrayList.get(ArrayList.java:304)
05-29 11:40:04.531: E/MapScreen_(11196):    at maps.aj.bs.c(Unknown Source)
05-29 11:40:04.531: E/MapScreen_(11196):    at maps.aj.bs.o(Unknown Source)
05-29 11:40:04.531: E/MapScreen_(11196):    at maps.aj.bq.b(Unknown Source)
05-29 11:40:04.531: E/MapScreen_(11196):    at maps.aj.bq.a(Unknown Source)
05-29 11:40:04.531: E/MapScreen_(11196):    at maps.aj.al.a(Unknown Source)
05-29 11:40:04.531: E/MapScreen_(11196):    at bcn.onTransact(SourceFile:152)
05-29 11:40:04.531: E/MapScreen_(11196):    at android.os.Binder.transact(Binder.java:310)
05-29 11:40:04.531: E/MapScreen_(11196):    at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.addPolygon(Unknown Source)
05-29 11:40:04.531: E/MapScreen_(11196):    at com.google.android.gms.maps.GoogleMap.addPolygon(Unknown Source)
05-29 11:40:04.531: E/MapScreen_(11196):    at com.cidaut.blueparking.MapScreen.editaCalleEnMapa(MapScreen.java:462)
05-29 11:40:04.531: E/MapScreen_(11196):    at com.cidaut.blueparking.MapScreen_.access$21(MapScreen_.java:1)
05-29 11:40:04.531: E/MapScreen_(11196):    at com.cidaut.blueparking.MapScreen_$24.run(MapScreen_.java:562)
05-29 11:40:04.531: E/MapScreen_(11196):    at android.os.Handler.handleCallback(Handler.java:725)
05-29 11:40:04.531: E/MapScreen_(11196):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-29 11:40:04.531: E/MapScreen_(11196):    at android.os.Looper.loop(Looper.java:137)
05-29 11:40:04.531: E/MapScreen_(11196):    at android.app.ActivityThread.main(ActivityThread.java:5041)
05-29 11:40:04.531: E/MapScreen_(11196):    at java.lang.reflect.Method.invokeNative(Native Method)
05-29 11:40:04.531: E/MapScreen_(11196):    at java.lang.reflect.Method.invoke(Method.java:511)
05-29 11:40:04.531: E/MapScreen_(11196):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-29 11:40:04.531: E/MapScreen_(11196):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-29 11:40:04.531: E/MapScreen_(11196):    at dalvik.system.NativeStart.main(Native Method)

我真的不明白为什么会发生这种情况。

【问题讨论】:

  • 尝试在调试模式下运行。也许 c.getPuntos() 返回一个 emply 数组

标签: android indexoutofboundsexception android-maps-v2


【解决方案1】:

您的错误可能来自您的 for 语句:

for (final Punto p : c.getPuntos())

能否请您发布您的 getPuntos() 函数的代码?您似乎试图从一个空的 ArrayList 中获取一个对象。

【讨论】:

  • 我在添加多边形之前添加了size == 0 检查,错误消失了。谢谢!
猜你喜欢
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多