2012-01-27 30 views
-1

我已經編寫了Android中的GoogleMaps中顯示多個標記的代碼。我的代碼如下。如何解決Android中GoogleMaps中的ConcurrentModificationException異常

List<Overlay> markersList; 
private MyItemizedOverlay funPlaces; 
Runnable r = new Runnable() { 
     public void run() { 
      if (markersList != null) { 
       MapController mc = mapView.getController(); 
       mc.setZoom(15); 
       for (int i=0; i < markersList.size(); i++) { 
        funPlaces = (MyItemizedOverlay) markersList.get(i); 
        GeoPoint pt = funPlaces.getCenterPt(); 
        mc.setCenter(pt); 
        mapView.postInvalidate(); 
       } 
      } 
     } 
    }; 
Thread t=new Thread(r,"ClassName"); 
t.start(); 

當我運行上面的代碼有時它工作正常,但有時它給出ConcurrentModificationException。如何解決這個問題?任何想法非常感謝。

+7

請格式化您的問題。你的問題也應該幫助別人,很難閱讀。我還建議看看[如何以及爲什麼你應該接受答案](http://meta.stackexchange.com/a/5235/169719)。 – Knickedi 2012-01-27 19:07:20

+0

當使用此Runnable時? – Olegas 2012-01-27 19:08:39

+3

哪條線是例外?什麼是堆棧跟蹤? – 2012-01-27 19:10:25

回答

1

如果這就是你得到錯誤的地方,那麼在迭代過程中幾乎可以肯定地修改ArrayList。我無法從你提供的代碼中判斷這是由於實際的併發性,還是隻是在迭代過程中對ArrayList進行修改,但這將是原因。

+0

是的,我明白problem.Do你有問題 – androiduser 2012-01-27 19:50:09

+0

解決方案在沒有看到這實際上是錯誤的代碼的一部分嗎?只有「重新排列你的代碼,這樣你纔不會通過迭代器以外的任何東西修改ArrayList。」或者,如果它實際上是由於併發性,使用類似的東西的意思是同時使用的CopyOnWriteArrayList。 – 2012-01-27 19:52:15

相關問題