Risposta supplementare: Convenzioni di denominazione per la stringa chiave
Il processo effettivo di trasmissione dei dati ha già ricevuto risposta, tuttavia la maggior parte delle risposte utilizza stringhe codificate per il nome della chiave nell'Intento. Questo di solito va bene se utilizzato solo all'interno della tua app. Tuttavia, la documentazione consiglia di utilizzare le EXTRA_*
costanti per tipi di dati standardizzati.
Esempio 1: utilizzo dei Intent.EXTRA_*
tasti
Prima attività
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(Intent.EXTRA_TEXT, "my text");
startActivity(intent);
Seconda attività:
Intent intent = getIntent();
String myText = intent.getExtras().getString(Intent.EXTRA_TEXT);
Esempio 2: definizione della propria static final
chiave
Se una delle Intent.EXTRA_*
stringhe non soddisfa le tue esigenze, puoi definire la tua all'inizio della prima attività.
static final String EXTRA_STUFF = "com.myPackageName.EXTRA_STUFF";
Includere il nome del pacchetto è solo una convenzione se si utilizza solo la chiave nella propria app. Ma è necessario evitare conflitti di denominazione se si sta creando una sorta di servizio che altre app possono chiamare con un Intento.
Prima attività:
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(EXTRA_STUFF, "my text");
startActivity(intent);
Seconda attività:
Intent intent = getIntent();
String myText = intent.getExtras().getString(FirstActivity.EXTRA_STUFF);
Esempio 3: utilizzo di una chiave di risorsa String
Sebbene non menzionata nella documentazione, questa risposta consiglia di utilizzare una risorsa String per evitare dipendenze tra le attività.
strings.xml
<string name="EXTRA_STUFF">com.myPackageName.MY_NAME</string>
Prima attività
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra(getString(R.string.EXTRA_STUFF), "my text");
startActivity(intent);
Seconda attività
Intent intent = getIntent();
String myText = intent.getExtras().getString(getString(R.string.EXTRA_STUFF));