Android Tutorial Beispiel mit zwei Activities

klaus

Expert
Licensed User
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:


two_activities.png



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
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:

twoactivities_logcat.png


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
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.

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
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:

zip.gif
TwoActivities.zip
 
Last edited:
Top