2016-06-29 4 views
0

Ich erstelle eine Google Maps-Anwendung und ich muss ALLE Informationen über die Marker, die der Benutzer erstellt hat, senden. Allerdings möchte ich die Aktivität danach nicht öffnen, sondern nur die Daten senden und dann die Aktivität über einen separaten Button öffnen. Irgendwelche Vorschläge, wie ich dieses Problem angehen sollte?Java: Senden von Absichten zu verschiedenen Aktivitäten

Hier ist der Code, wo der Marker erzeugt wird, und an der anderen Tätigkeit über, aber ich möchte nicht, um die Aktivität beginnen, die die Info :(

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent data) { 
    if (requestCode == GET_DETAILS) { 
     if (resultCode == RESULT_OK) { 
      List<MarkerOptions> markers = new ArrayList<MarkerOptions>(); 

      String marker_title=data.getStringExtra("title"); 

      MarkerOptions markerOptions = new MarkerOptions() 
        .position(new LatLng(lat, lon)) 
        .title(marker_title); 
      Marker m = mMap.addMarker(markerOptions); 
      markers.add(markerOptions); 

      MarkerOptions[] markersArray = markers.toArray(new MarkerOptions[markers.size()]); 
      Intent intent = new Intent(this, MarkerListActivity.class); 
      intent.putExtra("markers", markersArray); 
      startActivity(intent); 

      mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(lat, lon))); 

     } 
    } 
} 

Auch empfängt, eine andere Sache, , was der Code tut:

List<MarkerOptions> markers = new ArrayList<MarkerOptions>(); 

tun ich bin neu in Java und Programmierung so dass ich nicht sicher bin, warum zwei Datenstrukturen gibt es statt einer

Antwort

1

ich glaube, Sie nicht bekommen, was ist. der Punkt Intents für diesen Fall. Intents werden verwendet, um eine Activity von einem anderen (unter anderem) zu starten. Wie Sie sagen, können Sie Daten an die Activity übergeben, die in der Intent gestartet werden soll, wenn die Daten von der Activity, die kurz vor dem Start ist, benötigt werden. Es scheint mir, dass Sie die Daten über die Intent an die Activity senden möchten, so dass jede Activity Instanz dieser Klasse diese Daten erhält. Es funktioniert nicht so. Die Daten, die Sie über die Intent senden werden nicht „gerettet“ für alle Instanzen der Activity, so ein neueActivity über ein Button zu einem späteren Zeitpunkt starten, nicht in der Lage sein, die Daten zuzugreifen, die auf einer früheren Intent gesendet wurden.

Kurz gesagt, es scheint, dass der Intent Mechanismus nicht das ist, was Sie für das, was Sie versuchen, tun möchten. Es sieht so aus, als ob die Marker in einer SharedPreference oder einer Database persistiert werden soll, damit jede Instanz von Activity die Daten erhalten kann.

+0

ahh ich verstehe jetzt, danke für Ihre ausführliche Antwort! –

+0

Kein Problem. Froh, dass ich Helfen kann. – Emmanuel

+0

wäre es okay für Sie, eine kurze Frage zu beantworten, die ich am Ende dieses Beitrags geschrieben habe? Liste markers = new ArrayList (); <---- Warum gibt es zwei Datenstrukturen? Was repräsentiert das <>? und was gibt das aus? –