Respuesta suplementaria: convenciones de nomenclatura para la cadena clave
El proceso real de pasar datos ya ha sido respondido, sin embargo, la mayoría de las respuestas utilizan cadenas codificadas para el nombre de la clave en la intención. Esto generalmente está bien cuando se usa solo dentro de su aplicación. Sin embargo, la documentación recomienda utilizar las EXTRA_*
constantes para los tipos de datos estandarizados.
Ejemplo 1: uso de Intent.EXTRA_*
teclas
Primera actividad
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(Intent.EXTRA_TEXT, "my text");
startActivity(intent);
Segunda actividad:
Intent intent = getIntent();
String myText = intent.getExtras().getString(Intent.EXTRA_TEXT);
Ejemplo 2: definir tu propia static final
clave
Si una de las Intent.EXTRA_*
cadenas no se ajusta a sus necesidades, puede definir la suya al comienzo de la primera actividad.
static final String EXTRA_STUFF = "com.myPackageName.EXTRA_STUFF";
Incluir el nombre del paquete es solo una convención si solo usa la clave en su propia aplicación. Pero es necesario evitar conflictos de nombres si está creando algún tipo de servicio al que otras aplicaciones puedan llamar con una intención.
Primera actividad:
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(EXTRA_STUFF, "my text");
startActivity(intent);
Segunda actividad:
Intent intent = getIntent();
String myText = intent.getExtras().getString(FirstActivity.EXTRA_STUFF);
Ejemplo 3: uso de una clave de recurso de cadena
Aunque no se menciona en la documentación, esta respuesta recomienda utilizar un recurso String para evitar dependencias entre actividades.
strings.xml
<string name="EXTRA_STUFF">com.myPackageName.MY_NAME</string>
Primera actividad
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(getString(R.string.EXTRA_STUFF), "my text");
startActivity(intent);
Segunda actividad
Intent intent = getIntent();
String myText = intent.getExtras().getString(getString(R.string.EXTRA_STUFF));