2012-11-12 4 views
0

La fonction onTap dans ma MapActivity renvoie toujours 0 quel que soit l'élément sur lequel je clique sur la carte. C'est la fonction onTap:Android MapActivity onTap index renvoie toujours 0

@Override 
protected boolean onTap(int i) { 

    OverlayItem item = myOverlays.get(i); 
    AlertDialog.Builder dialog = new AlertDialog.Builder(context); 

    dialog.setTitle(item.getTitle()); 
    dialog.show(); 

    return true; 
} 

//myOverlays is a ArrayList<OverlayItem> 

Cependant. Chaque fois que la fonction s'exécute, l'index (i) est toujours 0. J'ai confirmé cela en utilisant à la fois les points d'arrêt et le débogage du journal. Cela me laisse plutôt perplexe, car en utilisant cette fonction, je reçois le bon contenu Dialog.

Le item.getTitle() obtient le titre approprié pour l'élément cliqué, ce qui signifie l'élément objet est correct, ce qui signifie myOverlays.get (i) est en quelque sorte en mesure d'obtenir des objets différents, même si l'indice (i) est toujours 0. C'est stupéfiant.

Quelqu'un veut-il m'éclairer? Pensez-vous que cela pourrait être un problème lié au fait que les "clics" sont effectués sur un émulateur?

Merci d'avance. Krys

+0

Post plus de code. Cela fonctionne bien de ma part. – slybloty

Répondre

1

Ceci est juste une supposition car vous ne montrez pas le code où vous créez la superposition et ajoutez des éléments.

Vous ajoutez probablement plusieurs ItemizedOverlays et un seul élément à chacun des recouvrements. Quelque chose comme:

for(i=0; i<count; i++){ 
    MyItemizedOverlay itemizedOverlay = new MyItemizedOverlay(...); 
    OverlayItem oi = new OverlayItem(...); 
    itemizedOverlay.add(oi); 
    mapView.getOverlays().add(itemizedOverlay); 
} 

avec le code ci-dessus, vous aurez plusieurs superpositions, chacun avec un élément en position 0.

Pour plus d'efficacité, vous devriez faire quelque chose comme:

MyItemizedOverlay itemizedOverlay = new MyItemizedOverlay(...); 
for(i=0; i<count; i++){ 
    OverlayItem oi = new OverlayItem(...); 
    itemizedOverlay.add(oi); 
} 
mapView.getOverlays().add(itemizedOverlay); 

avec le code ci-dessus, vous n'aurez qu'une seule superposition avec plusieurs éléments.

Cordialement.

+0

Vous avez complètement raison, je ne vois pas pourquoi je ne l'ai pas vu plus tôt. Merci beaucoup! :) – krystah