Passare un oggetto da una Activity a un’altra

Il metodo startActivity(Intent intent) della classe Activity permette di chiamare una seconda Activity specificata utilizzando l’argomento Intent.
All’argomento Intent possono essere associati dati primitivi o array di dati primitivi che la seconda Activity può utilizzare, è anche possibile passare oggetti di tipo String utilizzando specifici metodi put*() della classe Bundle.
In questo articolo riporto un esempio per passare un oggetto più complesso fra una Activity e un’altra.

Supponi di voler passare un oggetto Contact come questo:

La prima cosa da fare è implementare l’interfaccia Parcelable

che richiede

  • un campo CREATOR, public, static e che implementa Parcelable.Creator, e di cui riporto una implementazione standard per la classe Contact
  • il punto precedente prevede la presenza di un costruttore
  • il metodo writeToParcel, per salvare i campi firstname e lastname

    è importante che i dati letti nel metodo readFromParcel corrispondano nel tipo e nell’ordine a quelli scritti nel metodo writeToParcel
  • il metodo describeContents, la cui implementazione standard è:

    la funzione di questo metodo non mi è chiara, e non so in quali situazione potrebbe restituire un valore diverso da 0

Ora la classe Contact è pronta per essere passata da una attività all’altra, il codice da inserire nella activity chiamante è

dove SecondActivity è l’activity chiamata, che riceve e gestisce l’oggetto Contact con il codice:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.