Abhängig von den Umständen gibt es verschiedene Möglichkeiten, um das zu erreichen, was Sie wollen.
Das häufigste Szenario (wie es sich bei Ihnen anhört) ist, wenn eine untergeordnete Aktivität verwendet wird, um Benutzereingaben abzurufen - z. B. die Auswahl eines Kontakts aus einer Liste oder die Eingabe von Daten in ein Dialogfeld. In diesem Fall sollten startActivityForResult
Sie die Aktivität Ihres Kindes starten.
Dies bietet eine Pipeline zum Zurücksenden von Daten an die Hauptaktivität mithilfe von setResult
. Die setResult-Methode verwendet einen int-Ergebniswert und eine Absicht, die an die aufrufende Aktivität zurückgegeben wird.
Intent resultIntent = new Intent();
// TODO Add extras or a data URI to this intent as appropriate.
resultIntent.putExtra("some_key", "String data");
setResult(Activity.RESULT_OK, resultIntent);
finish();
Um auf die zurückgegebenen Daten in der aufrufenden Aktivität zuzugreifen, überschreiben Sie diese onActivityResult
. Der requestCode entspricht der im startActivityForResult
Aufruf übergebenen Ganzzahl , während der resultCode und die Datenabsicht von der untergeordneten Aktivität zurückgegeben werden.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (MY_CHILD_ACTIVITY) : {
if (resultCode == Activity.RESULT_OK) {
// TODO Extract the data returned from the child Activity.
String returnValue = data.getStringExtra("some_key");
}
break;
}
}
}