HenryRonan Posté(e) 5 juillet 2012 Share Posté(e) 5 juillet 2012 Bonjour a tous, mon probleme n'est pas exactement ce qui est indiqué dans le titre... En fait je plante le decor : un main, avec sa classe, 4 boutons 1 de ces boutons lance un xml(Affiche_Map.xml) avec sa classe qui affiche une Google Map et des pointeurs. Quand je clique (ontap) sur ce pointeur (extend de la classe ItemizedOverlay) j'ai un popup qui s'ouvre avec 3 choix possibles. Si je prend un de ces choix, je souhaite ouvrir un 3e xml (gere_point.xml) qui gere ce qui est sensé se passé sur cette localisation. Quand j'ai fini mon traitement sur le 3e xml(gere_point.xml donc pour ceux qui sont perdus), je souhaiterai revenir a ma GoogleMap (Affiche_Map.xml). Ca j'y arrive... mais pas comme il faudrait visiblement, car quand je reviens en arriere avec le bouton back, au lieu de revenir sur mon main.xml, je retombe sur mon gere_point.xml en fait, c'est comme si mon 2e affichage de GoogleMap etait une "sous-activité" de Gere_Point. Bref, je pense que je cafouille a un endroit, sur l'appel via mon intent je suppose... Il faut savoir qu'entre 2 activités, je n'ai besoin de passer des infos que mon onTap a "Gere_Point"... Quelqu'un pourrait simplement m'expliquer la logique de fonctionnement ? Voici mon code, simplifié a l'extreme... Main.java private void lance_google_map(){ Intent intent = new Intent(Main.this, Affiche_Map.class); //On démarre l'autre Activity startActivity(intent); } Affiche_map.java public final void onLocationChanged(Location location) { lat = location.getLatitude(); lng = location.getLongitude(); GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); mapView.removeAllViews(); mapOverlays = mapView.getOverlays(); mapOverlays.clear(); mapView.invalidate(); mapOverlays.add(new MyOverlay()); Display(); } private void Display(GeoPoint p) { Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher); ListItimizedOverlay itemizedoverlay = new ListItimizedOverlay(drawable, this); itemizedoverlay.removeAllOverlayItem(); itemizedoverlay.setMyLocation(p); itemizedoverlay.SetTheContext(getApplicationContext()); GeoPoint geoPoint = new GeoPoint((int) ((new_lat ) * 1E6),(int) ((new_lng ) * 1E6)); OverlayItem overlayitem = new OverlayItem(geoPoint,"titre", "blabla"); itemizedoverlay.addOverlayItem(overlayitem); List<Overlay> mapOverlays = mapView.getOverlays(); mapOverlays.add(itemizedoverlay); } ListItemizedOverlay.java public class ListItimizedOverlay extends ItemizedOverlay { private ArrayList<OverlayItem> arrayListOverlayItem = new ArrayList<OverlayItem>(); private static Context context; private Location location; private static Context basecontext ; public void setMyLocation(GeoPoint myLocation) { location = new Location("myLocation"); location.setLatitude(myLocation.getLatitudeE6() * 1E-6); location.setLongitude(myLocation.getLongitudeE6() * 1E-6); } @Override protected boolean onTap(int index) { OverlayItem item = arrayListOverlayItem.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(context); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); final String LeTitre= item.getTitle(); dialog.setPositiveButton("Gerer point", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { affiche_gere_point(LeTitre); return; } }); protected void affiche_gere_point(String Titre) { // TODO Auto-generated method stub Bundle objetbunble = new Bundle(); //Cela fonctionne plus ou moins comme une HashMap, on entre une clef et sa valeur en face objetbunble.putString("Titre", Titre); Intent myIntent = new Intent(context, Gere_Point.class); myIntent.putExtras(objetbunble); basecontext.startActivity(myIntent); } public ListItimizedOverlay(Drawable defaultMarker, Context pContext) { super(boundCenterBottom(defaultMarker)); this.context = pContext; } public void SetTheContext(Context context) { basecontext = context; } Gere_point.java private void depart(){ //mon traitement ici Intent myIntent = new Intent(Gere_point.this, Affiche_map.class); startActivity(myIntent); } Alors en fouillant sur le net, j'ai trouvé une solution... je sais pas si c'est la bonne, mais elle marche au cas ou quelqu'un chercherait, sur ma derniere activity, j'ai simplement retirer mon code : private void depart(){ //mon traitement ici Intent myIntent = new Intent(Gere_point.this, Affiche_map.class); startActivity(myIntent); } et je l'ai remplacé par un : private void depart(){ //mon traitement ici finish(); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.