Dodatkowa odpowiedź: konwencje nazewnictwa dla ciągu klucza
Odpowiedzi na faktyczny proces przekazywania danych zostały już udzielone, jednak w większości odpowiedzi użyto zakodowanych ciągów znaków dla nazwy klucza w zamiarze. Zwykle jest to w porządku, gdy jest używane tylko w aplikacji. Jednak dokumentacja zaleca stosowanie EXTRA_*
stałych dla standardowych typów danych.
Przykład 1: Używanie Intent.EXTRA_*
kluczy
Pierwsza aktywność
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(Intent.EXTRA_TEXT, "my text");
startActivity(intent);
Druga aktywność:
Intent intent = getIntent();
String myText = intent.getExtras().getString(Intent.EXTRA_TEXT);
Przykład 2: Definiowanie własnego static final
klucza
Jeśli jeden z Intent.EXTRA_*
Ciągów nie odpowiada Twoim potrzebom, możesz zdefiniować własny na początku pierwszej aktywności.
static final String EXTRA_STUFF = "com.myPackageName.EXTRA_STUFF";
Dołączenie nazwy pakietu to tylko konwencja, jeśli używasz tylko klucza we własnej aplikacji. Konieczne jest jednak unikanie konfliktów nazw, jeśli tworzysz jakąś usługę, którą inne aplikacje mogą wywoływać z zamiarem.
Pierwsza aktywność:
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(EXTRA_STUFF, "my text");
startActivity(intent);
Druga aktywność:
Intent intent = getIntent();
String myText = intent.getExtras().getString(FirstActivity.EXTRA_STUFF);
Przykład 3: Korzystanie z klucza zasobu String
Chociaż nie wspomniano w dokumentacji, ta odpowiedź zaleca użycie zasobu String, aby uniknąć zależności między działaniami.
strings.xml
<string name="EXTRA_STUFF">com.myPackageName.MY_NAME</string>
Pierwsza aktywność
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(getString(R.string.EXTRA_STUFF), "my text");
startActivity(intent);
Druga aktywność
Intent intent = getIntent();
String myText = intent.getExtras().getString(getString(R.string.EXTRA_STUFF));