java.util.ConcurrentModificationException? [英] java.util.ConcurrentModificationException?
本文介绍了java.util.ConcurrentModificationException?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请指导我在这里做什么错误?
任何帮助将是AP preciated。
私人无效LoopThroughEachATMToDisplayOnMap()
{
可绘制可绘制= NULL; 的for(int i = 0; I< atm.getAtmList()大小();我++){ 如果(breakFlag)
打破; 抽拉= getAppropriatePin(ⅰ);
如果(绘制== NULL)
绘制= getResources()getDrawable(R.drawable.marker)。
itemizedOverlay =新MyItemizedOverlay(绘制,图形页面); ATM机= atm.getAtmList()得到(I)。
如果(一个!= NULL){
INT [] =坐标getIntCoordinates(一
.getCoordinates());
如果(坐标!= NULL){
的GeoPoint点=新的GeoPoint(坐标[0]
坐标[1]);
OverlayItem overlayItem =新OverlayItem(
点,a.getBankName(),a.getAddress()
+@@+ a.getPhone()+@@
+ a.getWebAddress()+@@
+ a.getCoordinates());
itemizedOverlay.addOverlay(overlayItem);
System.out的
.println(坐标-------------------------
+ I +
+坐标[0]
+,
+坐标[1]);
} }
如果(mapOverlays == NULL)
mapOverlays =调用MapView.getOverlays(); mapOverlays.add(itemizedOverlay);
}
的System.out.println(自动柜员机地图注射完成--------------------------------); } 06-09 18:41:12.019:ERROR / AndroidRuntime(13973):未捕获的处理程序:螺纹主力退出,由于未捕获的异常
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):java.util.ConcurrentModificationException
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在java.util.AbstractList中的$ SimpleListIterator.next(AbstractList.java:64)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:44)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在com.google.android.maps.MapView.onDraw(MapView.java:494)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.View.draw(View.java:6535)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.ViewGroup.drawChild(ViewGroup.java:1585)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1312)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.View.draw(View.java:6538)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.ViewGroup.drawChild(ViewGroup.java:1585)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1312)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.View.draw(View.java:6538)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.widget.FrameLayout.draw(FrameLayout.java:352)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.ViewGroup.drawChild(ViewGroup.java:1585)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1312)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.View.draw(View.java:6538)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.widget.FrameLayout.draw(FrameLayout.java:352)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在com.android.internal.policy.impl.PhoneWindow $ DecorView.draw(PhoneWindow.java:1866)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.ViewRoot.draw(ViewRoot.java:1364)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.ViewRoot.performTraversals(ViewRoot.java:1118)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.view.ViewRoot.handleMessage(ViewRoot.java:1650)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.os.Handler.dispatchMessage(Handler.java:99)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.os.Looper.loop(Looper.java:123)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在android.app.ActivityThread.main(ActivityThread.java:4595)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在java.lang.reflect.Method.invokeNative(本机方法)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在java.lang.reflect.Method.invoke(Method.java:521)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-09 18:41:12.149:ERROR / AndroidRuntime(13973):在dalvik.system.NativeStart.main(本机方法)
解决方案
我得到了回答我的自我。
实际上mapOverlays.add(itemizedOverlay);需要的用户界面运行。
所以它不是UI线程这就是为什么它被养错误。
我只是跑在uithread的功能,从而解决了我的问题。
please guide what mistake am i doing here? any help would be appreciated.
private void LoopThroughEachATMToDisplayOnMap()
{
Drawable drawable = null;
for (int i = 0; i < atm.getAtmList().size(); i++) {
if(breakFlag)
break;
drawable = getAppropriatePin(i);
if(drawable == null)
drawable = getResources().getDrawable(R.drawable.marker);
itemizedOverlay = new MyItemizedOverlay(drawable, mapView);
ATM a = atm.getAtmList().get(i);
if (a != null) {
int[] coordinates = getIntCoordinates(a
.getCoordinates());
if (coordinates != null) {
GeoPoint point = new GeoPoint(coordinates[0],
coordinates[1]);
OverlayItem overlayItem = new OverlayItem(
point, a.getBankName(), a.getAddress()
+ "@@" + a.getPhone() + "@@"
+ a.getWebAddress() + "@@"
+ a.getCoordinates());
itemizedOverlay.addOverlay(overlayItem);
System.out
.println("coordinates-------------------------"
+ i + " "
+ coordinates[0]
+ ","
+ coordinates[1]);
}
}
if(mapOverlays == null)
mapOverlays = mapView.getOverlays();
mapOverlays.add(itemizedOverlay);
}
System.out.println("atms maps injection complete--------------------------------");
}
06-09 18:41:12.019: ERROR/AndroidRuntime(13973): Uncaught handler: thread main exiting due to uncaught exception
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): java.util.ConcurrentModificationException
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:44)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at com.google.android.maps.MapView.onDraw(MapView.java:494)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.View.draw(View.java:6535)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.ViewGroup.drawChild(ViewGroup.java:1585)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1312)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.View.draw(View.java:6538)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.ViewGroup.drawChild(ViewGroup.java:1585)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1312)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.View.draw(View.java:6538)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.widget.FrameLayout.draw(FrameLayout.java:352)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.ViewGroup.drawChild(ViewGroup.java:1585)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1312)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.View.draw(View.java:6538)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.widget.FrameLayout.draw(FrameLayout.java:352)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1866)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.ViewRoot.draw(ViewRoot.java:1364)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.ViewRoot.performTraversals(ViewRoot.java:1118)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.view.ViewRoot.handleMessage(ViewRoot.java:1650)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.os.Handler.dispatchMessage(Handler.java:99)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.os.Looper.loop(Looper.java:123)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at android.app.ActivityThread.main(ActivityThread.java:4595)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at java.lang.reflect.Method.invokeNative(Native Method)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at java.lang.reflect.Method.invoke(Method.java:521)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-09 18:41:12.149: ERROR/AndroidRuntime(13973): at dalvik.system.NativeStart.main(Native Method)
解决方案
i got answer my self.
actually mapOverlays.add(itemizedOverlay); needs ui to run.
so it was not ui thread thats why it was raising error.
i just ran that function in uithread and which resolved my problem.
这篇关于java.util.ConcurrentModificationException?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文