2012-02-17 19 views
8

W mojej aplikacji Android mam aktywność zawierającą obiekt Parcelable (implementuje Parcelable).Jak napisać mapę do paczki?

Ten obiekt zawiera mapę.

Kiedy próbuję wykonać następujące czynności w metodzie writeToParcel():

parcel.writeMap(myMap); 

otrzymuję następujący komentarz z API:

Proszę używać writeBundle (Bundle) zamiast. Spłaszcza mapę w paczce przy aktualnej dataPosition(), zwiększając w razie potrzeby właściwość dataCapacity(). Klawisze mapy muszą być obiektami typu String. Wartości mapy są zapisywane przy użyciu parametru writeValue (obiekt) i muszą być zgodne ze specyfikacją.

Jak mam to zrobić? Jak mam korzystać z writeBundle(myMap) tutaj?

+0

Możesz uzyskać pomoc z [tutaj] (http://stackoverflow.com/questions/8254654/how-convert-write-java-util-map-into-parcel-in-a-smart-way). –

+0

http://android-orchestration.googlecode.com/svn-history/r162/trunk/Orchestration/src/orchestration/android/parcelable/ParcelableAndroidTaskDTO.java –

+0

Dziękuję wam obojgu, więc nie ma prostej metody writeMap. Wygląda na to, że muszę wstawiać poszczególne wpisy mapy jeden po drugim. – Chaiavi

Odpowiedz

5

Pakiet to tylko mapa. Iteruj mapę, umieść każde odwzorowanie w nowo utworzonym obiekcie Bundle i wywołaj nad nim funkcję writeBundle. Może nie być najlepszym rozwiązaniem, ale rozwiązaniem praktycznym.