Android-Programmierung activity

Willemers Informatik-Ecke

Das einzig seriöse Javabuch :-) Mehr...

.. enthält ein Kapitel zur Android-Programmierung.
Bei Amazon bestellen
2015-12-12
Eine Activity verwaltet einen Bildschirm, also einen Dialog oder ein Formular. Bei Anlegen eines Projekts schlägt die IDE als erste Activity den Namen MainActivity vor. Die Klasse MainActivity befasst sich darum im Allgemeinen mit den Aktivitäten des Hauptbildschirms.

Activity und Manifest

Eine Activity muss im AndroidManifest.xml eingetragen sein. Arbeitet man mit einer IDE, wird diese es automatisch erledigen, wenn man eine Activity als solche hinzufügt.

Zustände einer Activity

Eine Activity hat keine main-Funktion, sondern sie wird durch die App aufgerufen, wenn entscheidende Ereignisse in ihrem Dasein eintreten. Um daran Anteil zu haben, überschreibt der Programmierer eine der folgenden Methoden.
onCreate()
Die Activity wird erzeugt. Diese Methode wird für jede Activity überschrieben, schon um den Bildschirm zu initialisieren. Dabei wird zunächst mit super.onCreate() die Methode onCreate der Basisklasse Activity aufgerufen.
Anschließend wird typischerweise die XML-Layout-Datei mit setContentView aktiviert.
onStart()
Eine bereits erzeugte Activity wird gestartet. Damit kann eine gestoppte Activity wieder aktiviert werden.
onPause()
Eine andere Activity kommt nach vorn. Die bisherige Activity wird kurz angehalten.
onResume()
Eine pausierte Activity wird wieder in den Vordergrund geschoben.
onStop()
Eine andere App wird aktiv.
onRestart()
War die Activity gestoppt worden, wird vor onStart erst einmal onRestart aufgerufen.
onDestroy()
Nun wird die App entgültig beendet und ist dann nicht mehr aktiv.

Activity und XML-Layout-Datei

Korrespondierend zu jeder Activity gibt es eine XML-Datei im Verzeichnis layout. Die IDE erzeugt im Allgemeinen sofort eine XML-Datei zur Activity. Bei der MainActivity heißt die passende Datei normalerweise activity_main.xml.

Im folgenden Listing wird beim Erzeugen der Activity mit der Funktion setContentView die XML-Datei als Basis für den eigenen Bildschirm herangezogen. Der Aufruf sorgt also für die Verbindung von XML-Datei und Activity.

import android.app.Activity;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         ...
}
Wird AppCompatActivity statt Activity erweitert, erhält die Activity eine App-Bar, also einen Balken, in dem sich auch ein Zugriff auf das Menü existiert. Dies ist für neuere Android-Versionen wichtig, weil dort oft bereits kein Standard-Button mehr für das Menü am Gerät existiert. Damit ist dann onOptionsItemSelected() für den Anwender nicht mehr erreichbar.

Wechsel der Activity

Um eine andere Activity zu starten, wird dessen Intent ermittelt und dann gestartet. Dazu wird als zweiter Parameter die Klasse der zu rufenden Activity ermittelt. Durch den Aufruf von startActivity() wird die Activity des übergebenen Intents gestartet.
Intent intent = new Intent(this, AufgerufeneActivity.class);
startActivity(intent);
Allerdings läuft die aufrufende Activity zunächst weiter. Sie wartet also nicht auf das Ende der eben gestarteten Activity, sondern umgekehrt wartet die zu startende Activity bis die aufrufende Activity das Ereignis abgearbeitet hat.

Datenübergabe bei Activity-Wechsel

Häufig müssen an die aufgerufene Activity Daten übermittelt werden. Diese können durch den Aufruf von putExtra im Intent der Ziel-Activity hinterlegt werden. Dazu wird ein Schlüssel verwendet, damit bei mehreren Daten der richtige Wert ermittelt werden kann.
Intent intent = new Intent(this, AufgerufeneActivity.class);
// Intent mit den Daten füllen
intent.putExtra("key1", "Irgendwelcher Text");
intent.putExtra("key2", "Nochson Text");
startActivity(intent);
Die mit putExtra gesendeten Daten werden mit getStringExtra empfangen. Dabei wird der erste Parameter als Schlüssel verwendet.
...
public void onCreate(Bundle bundle) {
    ...
    Intent intent = getIntent();
    String data = intent.getStringExtra("key1");
    String andere = intent.getStringExtra("key2");
    ...
}
Um eigene Objekte zu übertragen, müssen diese
Parcelable implementieren. Dann wird mit den Methoden putExtra("key", object) geschrieben und mit getParcelableExtra("key") zurückgeholt.

Die aufgerufene Activity schließt sich nach dem Start der anderen Activity durch den Aufruf von finish();.

Links


Homepage (C) Copyright 2015 Arnold Willemer