2014-09-25 14 views
6

Volevo passare uno Class Object da un'attività all'altra nell'app Xamarin.Android. Posso passare le stringhe semplici usando il metodo Intent.PutExtra.passare i dati da un'attività a un'altra in Xamarin.Android

Qualcuno lo sa. anyhelp è apprezzato :)

+0

È possibile utilizzare un componente nello store Xamarin denominato Simple storage, in pratica si fa il duro lavoro. https://components.xamarin.com/view/simple-storage – InitLipton

risposta

3

Il concetto è lo stesso di un'applicazione standard (non Xamarin).

È possibile utilizzare Intent#putExtra(String, Parcelable) per passare qualsiasi oggetto che implementa l'interfaccia Parcelable come extra.

L'interfaccia Parcelable è un po 'complessa, quindi assicurati di leggere la documentazione per assicurarti che la tua classe sia conforme ai requisiti. È inoltre possibile controllare lo this SO question per ulteriori informazioni sulla creazione di una classe Parcelable.

Non è possibile passare un riferimento oggetto tramite Intent. Questo perché le attività sono progettate per funzionare in modo completamente indipendente l'una dall'altra. Gli utenti possono lanciare la tua attività in background mentre svolgono altre attività, quindi è del tutto possibile (e molto probabile) che le variabili della tua attività vengano raccolte automaticamente. Quando l'utente torna in seguito alla tua attività, dovrebbe essere in grado di ricreare il suo stato.

Se è davvero necessario passare direttamente un riferimento a un oggetto, è possibile farlo rendendo tale oggetto una variabile statica. Mentre questo è un modo rapido e sporco per risolvere il problema di ottenere dati da un'attività a un'altra, non risolve il problema della variabile potenzialmente raccolta di dati inutili a un certo punto, ed è generalmente una scelta di progettazione scadente.

+0

Oggetto verrà passato come riferimento? – loop

+0

No. Sarà raggruppato in un 'Parcel' e quindi ripristinato da quel' Parcel' quando lo si recupera. –

+0

Come posso ottenere questo passaggio di riferimento dell'oggetto su un'altra attività? – loop

12

Basta aggiungere nel caso in cui qualcun altro si imbatta in questo. La cosa bella di Xamarin/.NET è la facilità con cui si usa JSON. È possibile serializzare i dati su una stringa e trasmetterli tramite gli extra.

JSON.NET è una bella libreria (che è disponibile nel negozio di componenti Xamarin) per questo e vi sono anche alcune classi JSON incorporate in .NET. Un esempio che usa JSON.NET sarebbe come questo.

Intent i = new Intent(Application.Context, typeof(SecondActivity)); 
i.PutExtra("key", JsonConvert.SerializeObject(myObject)); 
StartActivity(i); 

e negli altri Activity si può deserializzare esso.

var obj = JsonConvert.DeserializeObject<OBJ_TYPE>(Intent.GetStringExtra("key")); 

Questo è meglio che utilizzare un riferimento statico secondo me.

+0

grazie, davvero non mi è venuto in mente :) ma ho bisogno di passare l'oggetto per riferimento :) – loop

Problemi correlati