Dieses Beispielprogramm zeigt wie man mit mehr als einer Activity arbeitet und wie man Informationen zwischen den Activities überträgt.
Um das Beste aus diesem Tutorial zu machen ist es vorteilhaft den kompletten Code des Beispielprogrammes herunter zu laden. Er befindet sich am Ende.
Das Englische Originaltutorial.
In diesem Beispiel haben wir zwei Activities. Eine Activity ist die "Haupt "-Activity. Wenn der Benutzer den Knopf drückt, wird eine "List"-Activity angezeigt. Der Benutzer wählt ein Element aus der Liste und dann geht das Programm wieder in die "Haupt "-Activity zurück:
Es ist sehr empfohlen zuerst das Android Prozesse und Activities Lebensdauer Tutorial zu lesen, wenn es noch nicht getan wurde.
Um eine neue oder bestehende Activity zu dem Projekt hinzuzufügen, muß man sie unter Project - Add New Module oder unter Project - Add Existing Module hinzufügen.
Variablen die in Sub Process_Globals deklariert wurden, sind öffentliche Variablen und können von anderen Activities erreicht werden. Deshalb werden wir den gewählten Wert einer solchen Variablen speichern.
Wenn der Benutzer auf den "Choose item"-Button drückt wird die zweite Activity gestartet:
Wenn man eine Activity startet, wird die laufende Activity in Activity_Pause zuerst geschlossen und dann die Zielactivity in Activity_Resume aufgenommen (und zuvor, falls erforderlich, in Activity_Create erstellt).
Man kann es in den Logs (unten rechts im IDE) sehen:
Die zweite Activity ist sehr einfach:
Wenn der Benutzer auf ein Element in der Liste drückt, wir der Wert in der result Variable gespeichert und das Programm geht wieder in die "Haupt "-Activity zurück.
Die Activity_Resume Routine wird aufgerufen und hier wird geprüft ob die result Variable nicht leer ist und der Text des Labels Label1 dem entsprechend geändert.
In komplexeren Anwendungen mit mehr als zwei Activities kann man eine Prozess globale Variable in der "Haupt "-Activity verwenden. Vor dem Starten einer Activity kann man in dieser Variable eine bestimmte Konstante festgelegen und dann in Sub Activity_Resume den Wert dieser Variablen überprüfen um zu wissen welche Activity gestartet wurde und dementsprechend zu handeln.
Das Programm:
TwoActivities.zip
Um das Beste aus diesem Tutorial zu machen ist es vorteilhaft den kompletten Code des Beispielprogrammes herunter zu laden. Er befindet sich am Ende.
Das Englische Originaltutorial.
In diesem Beispiel haben wir zwei Activities. Eine Activity ist die "Haupt "-Activity. Wenn der Benutzer den Knopf drückt, wird eine "List"-Activity angezeigt. Der Benutzer wählt ein Element aus der Liste und dann geht das Programm wieder in die "Haupt "-Activity zurück:
Es ist sehr empfohlen zuerst das Android Prozesse und Activities Lebensdauer Tutorial zu lesen, wenn es noch nicht getan wurde.
Um eine neue oder bestehende Activity zu dem Projekt hinzuzufügen, muß man sie unter Project - Add New Module oder unter Project - Add Existing Module hinzufügen.
Variablen die in Sub Process_Globals deklariert wurden, sind öffentliche Variablen und können von anderen Activities erreicht werden. Deshalb werden wir den gewählten Wert einer solchen Variablen speichern.
Wenn der Benutzer auf den "Choose item"-Button drückt wird die zweite Activity gestartet:
B4X:
Sub Button1_Click
StartActivity(Activity2)
End Sub
Man kann es in den Logs (unten rechts im IDE) sehen:
Die zweite Activity ist sehr einfach:
B4X:
Sub Process_Globals
Dim result As String
result = ""
End Sub
Sub Globals
Dim ListView1 As ListView
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("2")
For i = 1 To 100
ListView1.AddSingleLine("Item #" & i)
Next
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub ListView1_ItemClick (Position As Int, Value As Object)
result = value 'store the value in the process global object.
StartActivity(Main) 'show the main activity again
End Sub
Die Activity_Resume Routine wird aufgerufen und hier wird geprüft ob die result Variable nicht leer ist und der Text des Labels Label1 dem entsprechend geändert.
B4X:
Sub Activity_Resume
If Activity2.result.Length > 0 Then
Label1.Text = "You have chosen: " & Activity2.result
Else
Label1.Text = "Please press on the button and choose an item."
End If
End Sub
Das Programm:
Last edited: