Java Reference
In-Depth Information
ersetzt. Als Intent können wir übrigens einen expliziten oder einen impliziten Intent ver-
wenden. Die Methode startActivityForResult hat neben dem Intent einen weiteren Parame-
ter des Typs int. Wir benutzen die in der Klasse Activity1 defi nierte Konstante REQUEST_
CODE, deren Wert frei gewählt wurde. Dieser Code hat nur dann eine Bedeutung, wenn von
einer Activity aus mehrere andere Activities mit Resultat gestartet werden können. Wenn
man in der startenden Activity auf die Rückkehr aus einer der anderen Activities reagiert
(s. unten), dann steht der beim Start angegebene Code zur Verfügung. Wenn man für unter-
schiedliche Starts jeweils einen unterschiedlichen Code angibt, kann man später anhand
des Codes unterscheiden, zu welchem Activity-Start die Rückkehr behandelt wird.
In Activity2 fügen wir einen Button mit der Beschri ung „Zurück“ hinzu. Als Reaktion auf
das Klicken auf diesen Button soll eine Methode namens clicked aufgerufen werden. Die
Klasse Activity2 (s. Listing 16.5) hatte bisher noch keine solche Methode. Sie muss ergänzt
werden:
public void clicked(View view)
{
EditText editText = (EditText) findViewById(R.id.inoutput);
String input = editText.getText().toString();
Intent intent = getIntent();
intent.putExtra(Activity1.MESSAGE, input);
setResult(RESULT_OK, intent);
finish();
}
In der Methode clicked wird zuerst der Text, der aus Activity1 übernommen und eventuell
von einer Benutzerin verä ndert wurde, ausgelesen und in einem Intent abgespeichert.
Danach wird dieses Intent-Objekt zusammen mit einem Rückgabe-Code (in diesem Fall der
Code für den Erfolgsfall) als Ergebnis gesetzt. Schließlich beendet sich Activity2 selbst, so
dass durch das Klicken auf den Zurück-Button tatsächlich wieder Activity1 erscheint.
In der Klasse Activity1 muss auf die Rückkehr von Activity2 reagiert werden. Dazu muss
die Methode onActivityResult überschrieben werden. Diese Methode wird bei der Rückkehr
mit dem in startActivityForResult angegebenen Code, einem Ergebniscode und einem Intent
aufgerufen. In unserem Fall prüfen wir, ob die Rückkehr erfolgreich ist und zu unserem
beim Start angegebenen Code passt. Wenn dies der Fall ist, werden die Daten aus dem
Intent gelesen und zusammen mit einer Erfolgsmeldung in das Ausgabefeld geschrieben.
Andernfalls erfolgt eine Fehlerausgabe.
protected void onActivityResult(int requestCode, int resultCode,
Intent intent)
{
TextView textView = (TextView) findViewById(R.id.output);
if(resultCode == RESULT_OK && requestCode == REQUEST_CODE)
{
String message = intent.getStringExtra(MESSAGE);
String prefix = getString(R.string.returnSuccessMessage);
textView.setText(prefix + " " + message);
}
else
{
textView.setText(R.string.returnFailureMessage);
}
}
 
Search WWH ::




Custom Search