2012-05-25 13 views
6

Sto utilizzando il seguente codice per leggere una mappa di tipo HashMap<String, String> da un pacco:Quale classloader usare con Parcel.readHashMap?

in.readHashMap(HashMap.class.getClassLoader()); 

Questo sembra funzionare bene, ma ottengo un avvertimento:

Type safety: The expression of type HashMap needs unchecked conversion to conform to Map<String,String> 

C'è un modo "giusto" per farlo, utilizzare un caricatore di classi diverso? O dovrei semplicemente andare con @SuppressWarnings("unchecked"?

risposta

6

La documentazione per gli sviluppatori Android per Parcel.readHashMap() dice:

Utilizzare readBundle(ClassLoader) invece (i cui dati devono avere stato scritto con writeBundle(Bundle)

Così forse si dovrebbe usare readBundle() e writeBundle() invece..

+12

Grazie per il suggerimento! Anche se in senso stretto non è la risposta alla domanda di cui sopra, solv ed il mio problema Ecco quello che ho fatto: Quando si scrive per il pacco: 'fascio Bundle = new Bundle();' \t \t \t 'bundle.putSerializable ("mappa", myMap);' ' dest.writeBundle (bundle); ' Quando si legge di nuovo dal collo: ' fascio Bundle = in.readBundle(); '' @SuppressWarnings ("incontrollato") '' HashMap myMap = (HashMap ) bundle.getSerializable ("mappa"); ' this.myMap = myMap;' – hdort

+0

OK, volevo formattarlo meglio, ma non funziona per me. Scusate! – hdort

+0

usa readBundle (classLoader) se la tua hashmap ha oggetti parcelable. –