Додатковий відповідь: Названня конвенцій для ключового рядка
Фактичний процес передачі даних вже відповів, проте більшість відповідей використовують жорстко закодовані рядки для ключового імені у Намір. Зазвичай це нормально, коли використовується лише у вашому додатку. Однак документація рекомендує використовувати EXTRA_*
константи для стандартизованих типів даних.
Приклад 1: Використання Intent.EXTRA_*
клавіш
Перша діяльність
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(Intent.EXTRA_TEXT, "my text");
startActivity(intent);
Другий вид діяльності:
Intent intent = getIntent();
String myText = intent.getExtras().getString(Intent.EXTRA_TEXT);
Приклад 2: Визначення власного static final
ключа
Якщо одна з Intent.EXTRA_*
рядків не відповідає вашим потребам, ви можете визначити власну на початку першого заняття.
static final String EXTRA_STUFF = "com.myPackageName.EXTRA_STUFF";
Включення назви пакету - це лише умова, якщо ви використовуєте лише ключ у власному додатку. Але необхідно уникати конфліктування імен, якщо ви створюєте якусь послугу, яку інші програми можуть викликати з наміром.
Перша діяльність:
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(EXTRA_STUFF, "my text");
startActivity(intent);
Другий вид діяльності:
Intent intent = getIntent();
String myText = intent.getExtras().getString(FirstActivity.EXTRA_STUFF);
Приклад 3: Використання ресурсного ключа String
Хоча це не зазначено в документації, ця відповідь рекомендує використовувати ресурс String, щоб уникнути залежностей між видами діяльності.
strings.xml
<string name="EXTRA_STUFF">com.myPackageName.MY_NAME</string>
Перша діяльність
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(getString(R.string.EXTRA_STUFF), "my text");
startActivity(intent);
Друга діяльність
Intent intent = getIntent();
String myText = intent.getExtras().getString(getString(R.string.EXTRA_STUFF));