这是我的第一个问题,所以如果有什么不对,请告诉。MapActivity中的ConcurrentModificationException
现在,我有一个public class MainMap extends MapActivity
它使用MyLocationListener
为用户的位置和HelloItemizedOverlay。 我从一个XML文件中获取某些POI,我想添加标记(漂亮的基本Overlays)。
用户按下一个按钮,启动的AsyncTask:
private class GetPOITask extends AsyncTask<String, Void, Void> {
protected Void doInBackground(String... params) {
clearMapOverlay();
if(!isBusyAddingOverlays)
{
connect(params[0]);
}
return null;
}
protected void onPreExecute() {
clearMapOverlay();
}
}
清除出MapOverlay(this.mv是一个MapView):
public void clearMapOverlay()
{
this.mv.getOverlays().remove(placesItemizedOverlay);
this.mv.postInvalidate();
this.mv.getOverlays().add(myLoc);
}
这是我的连接,方法调用方法时我有足够的信息添加标记:
private void addOverlayToList(int id, GeoPoint point, String title, String description)
{
//Log.e("Debug", "Adding overlay");
placesItemizedOverlay.addOverlay(new POIOverlay(id, point, title, description));
this.mv.getOverlays().add(placesItemizedOverlay);
}
这应该是所有相关的代码。
问题是,当我添加POI的和缩放地图(或移动它)时,我得到ConcurrentModificationException
。
我已经通过这个网站搜索,阅读类似的线程(例如this one),但我不能真正找到我做错了什么。
了解自己,这可能是明显的。
由于提前,
iarwain