2010-12-03 6 views
0

Ich habe eine Android-Anwendung, die Google Maps verwendet. Meine erste Aktivität startet eine Mapview mit einigen anklickbaren Icons. Wenn auf ein Symbol geklickt wird, wird eine neue Aktivität (Absicht) mit einer anderen Karte gestartet. Von der neuen Karte klicke ich dann auf den Zurück-Knopf, der mich zurück zu meiner ersten Karte bringt. Wenn ich jedoch anfange, in der Karte zu zoomen oder sich zu bewegen, werden nur die ursprünglich geladenen Kacheln angezeigt. Wie kann ich das ändern?Android Google Maps Fliesen nicht auf "Zurück" -Taste klicken klicken

Wenn Sie die Ausrichtung des Telefons ändern, wird die Karte aktualisiert und dann verhält es sich normal (weil die App neu gestartet wurde), also habe ich android: configChanges = "orientation" hinzugefügt, um den Neustart bei einer Orientierungsänderung zu stoppen. Ich habe das hinzugefügt, weil ich nicht alle Marker neu laden möchte (benutzt einen Webservice und kann etwas dauern).

Ich möchte nur die Kacheln laden, wenn ich auf die ursprüngliche Karte "zurück" klicke. Irgendwelche Ideen?

Antwort

3

Ich stieß vor kurzem auch auf dieses Problem! Überprüfen Sie Ihr Protokoll - Sie erhalten wahrscheinlich einen Fehler in der Art von "IllegalStateException: Verbindungspool heruntergefahren". Auch wie ich, schienen die einzigen Antworten, die Sie gefunden haben, für Leute zu sein, die ihren Google API-Schlüssel nicht richtig eingerichtet hatten. : - \

Ich lief schließlich in this link. (Sie müssen normalerweise in Ihrem Google-Konto angemeldet sein, um diese Posts lesen zu können.)

Es scheint, als ob es einen Fehler gibt, der nur eine Kartenaktivität pro Anwendung zulässt. Etwas was mit der Kartenaktualisierung zu tun hat, denke ich. Ich habe es geschafft, indem ich jede Kartenaktivität nach dem Laden der neuen Map abgeschlossen habe, wodurch die Aktivität vollständig neu geladen wurde, wenn der Benutzer zu ihr zurückkehrt. Es ist nicht ideal, aber es hat bisher gut funktioniert.

etwas detaillierter:

  1. Speichern Sie alle Informationen über die Karte, die Sie später abrufen möchten. Kartenzentrum und Kartenzoom kommen zuerst in den Sinn. Stellen Sie es irgendwo auf der Welt oder geben Sie es mit Ihrer Absicht weiter.

  2. Nachdem Sie die Absicht für die zweite Aktivität gestartet haben, rufen Sie finish() auf der ersten auf. Wenn Sie möchten, dass die zwei Maps dem Benutzer als dieselbe Map angezeigt werden, sollten Sie den gleitenden Übergang beenden, der standardmäßig beim Start einer neuen Aktivität auftritt. Tun Sie das, indem Sie diese Zeile unmittelbar nach dem Finish() aufrufen:

overridePendingTransition(0, 0);

  1. Wenn Ihre zweite Karte Aktivität beenden muss, wiederholen Sie Schritt 1, wenn nötig und dann die erste Karte Aktivität laden wieder mit die gleiche Methode wie in Schritt 2. Der Code von 2 würde in der onBackPressed() -Methode der Aktivität und wo auch immer sonst passend sein (vielleicht haben Sie eine Abbrechen-Schaltfläche oder etwas).

  2. Stellen Sie in onCreate der ersten Aktivität sicher, dass Sie nach Daten suchen, die beim letzten Aufruf der Aktivität gespeichert wurden, und ändern Sie Ihre Karte entsprechend.

war vielleicht, dass die ausführliche, aber ich benutze diese Website viel und ich bin immer dankbar für die Antworten, die zu viel viel mehr als die, die sagen, dass zu wenig sagen, haha!

+0

Ja. Ich habe getan, was Sie vorgeschlagen haben, indem Sie immer die Aktivität beenden und neu erstellen. Nicht genau das, was ich mir erhofft habe, aber es funktioniert. – Damon