Bonjour,
je suis entrain de faire une petite application basée essentiellement sur une carte google map.
en gros, ce que je fait :
- je chope la localisation de l'utilisateur
- je fait une requête vers un site qui me renvoi un certain nombre de points autours de la position de l'utilisateur
- je crée les marqueurs de chaque point sur la carte.
mais :
en attendant de récupérer les points, j'affiche une progressDialog du style "calcul en cours..."
pour celà je crée une progressDialog, je lance mon traitement dans un nouveau Thread, et à la fin du traitement je fait un :
seulement j'ai cette exception srur le mapView.invalidate() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 mc.setCenter(location); // mc ==> mapController mapView.invalidate(); //mapView ==> la mapView principale de l'appli progressDialog.dismiss(); //je "unset" la progressDialog
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Thread [<9> Thread-16] (Suspended (exception ViewRoot$CalledFromWrongThreadException)) ViewRoot.checkThread() line: 2932 ViewRoot.invalidateChild(View, Rect) line: 642 ViewRoot.invalidateChildInParent(int[], Rect) line: 668 FrameLayout(ViewGroup).invalidateChild(View, Rect) line: 2511 MapView(View).invalidate() line: 5279 NaehActivity$1.run() line: 97
voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 //cette fonction est appelé quand la localisation change public void setLocation(GeoPoint newLocation) { this.location = newLocation; progressDialog = ProgressDialog.show(this, getString(R.string.app_name), "Recherche des points les plus proches de votre position..."); new Thread() { public void run() { Points p = new Points(NaehActivity.this, location); ArrayList<Point> points = p.getPoints(); if(points != null && points.size() > 0) { for(Point point : points) { addMarker(point.getLocation(), point.getNom(), point.toString()); } } mc.setCenter(location); mapView.invalidate(); progressDialog.dismiss(); } }.start(); }
je précise que je suis débutant dans android, c'est ma 1ère application donc soyez indulgent
et merci par avance pour vos réponses.
Partager