Sto cercando di passare LinkedHashMap tra le attività, il mio codice è come questoAndroid Come passare LinkedHashMap tra le attività?
Attività A
LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>();
// setting data in map
Bundle bundle = new Bundle();
bundle.putSerializable("OBJECTS_LINKED_HASHMAP", mLinkedHashMap);
Intent intent = new Intent(this, ActivityB.class);
intent.putExtras(bundle);
startActivity(intent);
in attività quando ricevo oggetto fascio sto ottenendo "calco eccezione" messaggio di errore
Attività B
Bundle bundle = this.getIntent().getExtras();
LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>();
mLinkedHashMap = (LinkedHashMap<String, Object>) bundle.getSerializable("OBJECTS_LINKED_HASHMAP");
Come eccezioni classe del cast
ClassCastException: java.util.HashMap cannot be cast to LinkedHashMap
Ho controllato la documentazione LinkedHashMap implementando anche un'interfaccia Serializable.
Sto usando LinkedHashMap perché voglio mantenere l'ordine degli oggetti, nel modo in cui sono inseriti voglio tornare in ordine.
Come passare LinkedHashMap tra le attività?
Impossibile inserire/estrarre una 'LinkedHashMap' da/per un' Intento' perché Android converte 'LinkedHashMap' in un' HashMap' quando serializzi 'Mappa' nel' Bundle' in 'Intento'. Sul lato ricevente si ottiene un 'HashMap' e l'ordinamento di' LinkedHashMap' è scomparso. Devi convertire 'LinkedHashMap' in un array ordinato e passarlo nell'Intento', o usare un altro meccanismo serialize/deserialize. IMHO aggiungendo una libreria GSON per fare ciò è eccessivo, ma ci sono altre scelte più performanti. –
Vedi http://stackoverflow.com/questions/12300886/linkedlist-put-into-intent-extra-gets-recast-to-arraylist-when-retrieving-in-nex/12305459#12305459 per ulteriori dettagli sanguinosi –