Passaggio dati tra activity: bentornati al nostro consueto appuntamento con il nostro corso di programmazione Android, dopo aver visto nella scorsa lezione come cambiare activity nella nostra app, sicuramente qualcuno di voi si sarà posto domande del tipo: e adesso? Possibile che Android permetta soltanto applicazioni statiche senza un minimo di interazione?
Ovviamente la risposta a questi interrogativi è: NO! Oggi vedremo infatti come passare dati e parametri tra due activity.
Riprendiamo il nostro vecchio progetto con le due activity che cambiano al tap su un bottone, e andiamo a vedere il codice della nostra prima activity; come ricorderete abbiamo aggiunto un nuovo intent all’evento onClick del nostro button che si occupava soltanto del lancio della nuova activity:
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
publicvoid onClick(View view) {
Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
startActivity(intent);
}
});
come vediamo infatti una volta istanziato l’intent lanciamo soltanto la nuova activity, senza passare nulla.
Oggi proviamo a passare alla nuova activity una stringa con nome “stringaDaPassare” e valore “MobileOS!”, iniziamo modificando il codice della prima activity così come segue:
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
publicvoid onClick(View view) {
Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra(“stringaDaPassare”, “MobileOS!”);
startActivity(intent);
}
});
ovvero richiamiamo il metodo putExtra() della classe intent passando come parametri il nome della stringa e il contenuto; ovviamente avremmo potuto anche passare più dati. Adesso però dobbiamo creare nella nostra seconda Activity una funzione in grado di ricevere i dati passati dalla prima; apriamo la nostra seconda activity e nel metodo onCreate aggiungiamo le seguenti righe:
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bundle dati = getIntent().getExtras();
String stringaPassata = dati.getString(“stringaDaPassare”);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
}
}
ovvero creiamo un nuovo Bundle che ci recupera sia l’intent che i dati passati dalla precedente activity (immaginiamo un Bundle come una sorta di insieme di dati). E poi creiamo una nuova stringa (stringaPassata) che andrà a tirare fuori dal bundle la stringa che avevamo passato dalla vecchia activity; ovviamente poi con questa stringa faremo quello che ci fa più comodo!
Grazie per l’attenzione e arrivederci alla prossima puntata con la nostra guida!