Ergänzende Antwort: Namenskonventionen für die Schlüsselzeichenfolge
Der eigentliche Prozess der Datenübergabe wurde bereits beantwortet, die meisten Antworten verwenden jedoch fest codierte Zeichenfolgen für den Schlüsselnamen in der Absicht. Dies ist normalerweise in Ordnung, wenn es nur in Ihrer App verwendet wird. In der Dokumentation wird jedoch die Verwendung von empfohlenEXTRA_*
Konstanten für standardisierte Datentypen zu verwenden.
Beispiel 1: Verwenden von Intent.EXTRA_*
Schlüsseln
Erste Aktivität
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(Intent.EXTRA_TEXT, "my text");
startActivity(intent);
Zweite Aktivität:
Intent intent = getIntent();
String myText = intent.getExtras().getString(Intent.EXTRA_TEXT);
Beispiel 2: Definieren Sie Ihre eigenen static final
Schlüssel
Wenn eine der Intent.EXTRA_*
Zeichenfolgen nicht Ihren Anforderungen entspricht, können Sie zu Beginn der ersten Aktivität eine eigene definieren.
static final String EXTRA_STUFF = "com.myPackageName.EXTRA_STUFF";
Das Einfügen des Paketnamens ist nur eine Konvention, wenn Sie den Schlüssel nur in Ihrer eigenen App verwenden. Es ist jedoch unbedingt erforderlich, Namenskonflikte zu vermeiden, wenn Sie einen Dienst erstellen, den andere Apps mit Absicht aufrufen können.
Erste Aktivität:
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(EXTRA_STUFF, "my text");
startActivity(intent);
Zweite Aktivität:
Intent intent = getIntent();
String myText = intent.getExtras().getString(FirstActivity.EXTRA_STUFF);
Beispiel 3: Verwenden eines String-Ressourcenschlüssels
Obwohl in der Dokumentation nicht erwähnt, empfiehlt diese Antwort die Verwendung einer String-Ressource, um Abhängigkeiten zwischen Aktivitäten zu vermeiden.
string.xml
<string name="EXTRA_STUFF">com.myPackageName.MY_NAME</string>
Erste Aktivität
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(getString(R.string.EXTRA_STUFF), "my text");
startActivity(intent);
Zweite Aktivität
Intent intent = getIntent();
String myText = intent.getExtras().getString(getString(R.string.EXTRA_STUFF));