2010-09-22 14 views
7

Ich bin auf Android gestartet und habe eine Anfänger-Frage zum Wechsel zwischen mehreren Aktivitäten.Switching-Aktivitäten in Android

Ich verstehe, dass ich zwischen zwei Aktivitäten gehen kann, indem Sie eine Absicht aufrufen und dann mit setResult() zurückkehren. Was ich wissen möchte ist, wie man zwischen mehreren Aktivitäten springt. Insbesondere möchte ich etwas über den Prozesslebenszyklus erfahren. Ich verstehe, wie jede Aktivität gestartet wird onCreated(), aber ich bin mir nicht sicher, wie onResume() oder onRestart() implementieren, wenn ich zurückkommen möchte.

Also im Grunde habe ich 3 Aktivitäten: Activity1, Activity2 und Anctivity3.

Ich beginne mit Activity1 und dann Activity2 mit einem Intent aufrufen, und Activity2 ruft Activity3 auf. Verwenden von Tasten. Jetzt möchte ich von Aktivität 3 zu Aktivität1 zurückkehren. Das mache ich auch hier. Machen Sie eine Absicht und rufen Sie startActivity (Activity1_Intent) auf. Aber es gibt einen Laufzeitfehler.

Ich denke, ich muss OnResume() oder onRestart() implementieren, aber ich bin mir nicht sicher, wie das geht. In OnCreate() mache ich eine GridView, also wenn ich zurückkomme, muss ich diese GridView erneut machen?

Wenn jemand eine kleine Erklärung zu einem Tutorial geben könnte, wäre es großartig. Vielen Dank.

+0

Wenn Sie den Code, der den Laufzeitfehler verursacht, und auch den Stacktrace des Fehlers veröffentlichen können, können wir in unseren Antworten viel spezifischer sein. – Janusz

+0

beende() die erste Aktivität, bevor du eine andere startest. –

Antwort

7

In Ihrer Manifest-Datei setzen Sie android: launchMode = "singleTop" auf Ihre Activity1.

Dann wird Ihren Activity1 Gebrauch rufen:

Intent intent = new Intent(this, Activity1 .class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

FLAG_ACTIVITY_CLEAR_TOP: Wenn gesetzt, und die Aktivität gestartet wird, ist bereits in der aktuellen Aufgabe ausgeführt wird, dann anstatt eine neue Instanz dieser Aktivität gestartet, die alle der Andere Aktivitäten darüber werden geschlossen und diese Absicht wird als neue Absicht an die (nun oben) alte Aktivität geliefert.

FLAG_ACTIVITY_NEW_TASK: Wenn gesetzt, wird diese Aktivität der Beginn einer neuen Aufgabe auf diesem History-Stack.

http://developer.android.com/reference/android/content/Intent.html

1

Seit Android 4.0 Sie einfach in dem Manifest-Datei android einstellen: launchMode = "singleTask" und dann gibt es keine Notwendigkeit, Java zu schreiben.

Verwandte Themen