Дополнительный ответ: Соглашения об именах для ключевой строки
На фактический процесс передачи данных уже дан ответ, однако в большинстве ответов используются жестко закодированные строки для имени ключа в Intent. Это обычно хорошо, когда используется только в вашем приложении. Однако в документации рекомендуется использовать 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));