# Daten zwischen Activities übergeben



## mock789 (11. Okt 2012)

Hi,

ich will einen String von einer Activity zur anderen senden. 

Soweit bin ich bisher:


```
Intent orderIntent = new Intent(getApplicationContext(), BestelluebersichtActivity.class);
	     String order = "Test";
	     orderIntent.putExtra("order", order);
	     startActivity(orderIntent);
```


mein Problem ist nur, dass ich mit start Activity(orderIntent) sofort zur anderen Activity wechsel, was ich gar nicht will. Ich will einfach nur meinen String rüberschicken und später wenn ich lust hab über einen anderen Button zur Activity wechseln und mir meinen String in einer Textview anschauen?

Wie mach ich das, dass ich nicht sofort wechsel???


----------



## mjdv (11. Okt 2012)

Naja "übergib" halt erst wenn du den Knopf drückst.


----------



## mock789 (14. Okt 2012)

Hmm... ja, ich hab mein Problem nicht richtig erklärt!

Also ich will von ActivityEins einen String an ActivityDrei senden und danach auf einen Button drücken (startActivity(intent); lass ich hier weg) der mich auf eine ActivityZwei bringt. Dort drücke ich einen Button der mich zu ActivityDrei bringt.

Soweit so gut, nur, dass mir auf ActivityDrei kein String in meiner Textview angezeigt wird. 

Ohne startActivity(intent); scheint es nicht zu gehen. Was gibt es für eine andere Möglichkeit Daten an eine dritte Activity zu senden wenn man diese dann von einer anderen Activity erreichen will.


Ich hoffe ich hab mein Problem einigermaßen verständlich beschrieben


----------



## mjdv (14. Okt 2012)

Naja dann müsstest du dir global die Daten speichern, so das jeder darauf zugreifen kann. Zum Beispiel mit den ANdroid Preferences.

Aber so genau verstehe ich immer noch nicht was du meinst. Die Methode startActivity, startet eben wie der Name schon sagt eine Activity. Und mit dem Intent kannst du Daten übergeben an diese Activity.


----------



## Sen (14. Okt 2012)

Soweit ich das verstanden habe, will er Daten an eine Activity senden, die aber zu diesem Zeitpunkt garnicht aufgerufen wird, was für mich direkt bedeutet, dass es etwas halbwegs langlebiges sein muss. Von daher entweder mjdv's Vorschlag, oder du machst es auf die Mühsellige Variante und gibst die Daten an Activity2 weiter, die diese dann wiederrum an Activity3 weitergibt.


----------



## schlingel (15. Okt 2012)

Wenn ActivityDrei nicht sichtbar ist, ist es im besten Fall pausiert und im "schlimmsten" Fall gar nicht da. Es bringt dir also inhaltlich genau nichts vorher schon die Daten dorthin zu senden.

Wofür soll das gut sein?


----------



## mock789 (16. Okt 2012)

Also mit Preferences hab ich es auch nicht hingekriegt : (

Ich will eigentlich nur eine Art Warenkorb.

Also ich hab verschiedene Activites, eine auf der die Pizzas aufgelistet sind, eine für Pastas usw.
Wenn ich den Pizza Magherita Button zum Beispiel Drücke möchte ich das in meinem Warenkorb das abgespeichert wird. Ich möchte aber nicht gleich zu meinem Warenkorb gelangen sondern erst später wenn ich den Warenkorb Button drücke der sich z.B. auf meiner Hauptactivity befinden kann.


----------



## schlingel (16. Okt 2012)

Also, den Warenkorb kannst du ja auf mehrere Arten implementieren.

Prinzipiell gibt's mehrere Möglichkeiten wie du das anpackst.

1. Es gibt eine Store-Activity die sich merkt welche Items der Benutzer in den Korb legt und diese dann zum Auschecken weiter schickt. Wenn du für die Produkte einzelne Activities implementierst, musst du die aus dem Store mit startActivityForResulst starten und dann checken ob etwas gekauft wurde oder nicht, wenn du in die Store-Activity zurück kommst.

2. Du speicherst das ganze in einem zentralen DataStorage. Wie der aussieht bleibt dir überlassen, du kannst normale Files verwenden (CSV, XML, serialisierte Objekte, etc.), eine Datenbank oder tatsächlich nur die SharedPreferences.

Wichtig dabei ist nur, dass du dann eine Service-Klasse hast, die dir das CRUD abbildet. So bist du mit der Logik vollkommen weg von den Activities und kannst dich aufs wesentliche in der Activity konzentrieren: UI sein.


----------

