Aller au contenu

Appel d'une activité depuis un list Itemized Overlay


HenryRonan

Recommended Posts

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...