Ceci est ma première question ici, donc si quelque chose ne va pas, dites-le. Maintenant, j'ai un public class MainMap extends MapActivity
qui utilise un MyLocationListener
pour l'emplacement de l'utilisateur et un HelloItemizedOverlay. Je reçois certains POI d'un fichier XML auquel je veux ajouter des marqueurs (Overlays assez basiques).ConcurrentModificationException dans MapActivity
utilisateur appuie sur un bouton, AsyncTask commence:
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();
}
}
Dégager l'MapOverlay (this.mv est un MapView):
public void clearMapOverlay()
{
this.mv.getOverlays().remove(placesItemizedOverlay);
this.mv.postInvalidate();
this.mv.getOverlays().add(myLoc);
}
Ceci est la méthode que ma connexion appelle méthode lorsque J'ai assez d'informations pour ajouter un marqueur:
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);
}
Cela devrait être tout le code pertinent.
Le problème est que lorsque j'ajoute les POI et agrandir la carte (ou la déplacer), j'obtiens un ConcurrentModificationException
.
J'ai cherché à travers ce site en lisant des fils similaires (this one par exemple) mais je ne peux pas vraiment trouver ce que je fais de mal. Me connaissant, c'est probablement quelque chose d'évident.
Merci à l'avance,
Iarwain