2011-09-28 29 views

Respuesta

144

La clase HashMap de Java amplía la interfaz Serializable, lo que facilita su agregación a un intento, utilizando el método Intent.putExtra(String, Serializable).

En la actividad/servicio/receptor de difusión que recibe la intención, llame al Intent.getSerializableExtra(String) con el nombre que utilizó con putExtra.

Por ejemplo, cuando se envía la intención:

HashMap<String, String> hashMap = new HashMap<String, String>(); 
hashMap.put("key", "value"); 
Intent intent = new Intent(this, MyOtherActivity.class); 
intent.putExtra("map", hashMap); 
startActivity(intent); 

Y luego, en la actividad de recepción:

protected void onCreate(Bundle bundle) { 
    super.onCreate(savedInstanceState); 

    Intent intent = getIntent(); 
    HashMap<String, String> hashMap = (HashMap<String, String>)intent.getSerializableExtra("map"); 
    Log.v("HashMapTest", hashMap.get("key")); 
} 
+16

Tenga en cuenta que HashMaps se serializa. Mapas, aparentemente, no. –

+3

Map es una interfaz: no puede serializar una interfaz, solo una implementación específica de la misma. En este caso, Map no implementa/amplía la interfaz Serializable en sí, por lo que depende de la implementación específica si desea implementar Serializable o no. Y HashMap lo implementa. – JesusFreke

+1

Hola, estoy enviando un HashMap como un extra serializable de una actividad que inicié para el resultado de otra actividad. Así que estoy volviendo un intento en el resultado. Cuando trato de recuperar el HashMap desde la intención, (HashMap ) intent.getSerializableExtra ("map"); devuelve nulo. ¿Es porque estoy usando HashMap o porque lo estoy enviando desde una actividad que se creó para el resultado de otra actividad? – marienke

0

espero que esto debe trabajar también.

en la actividad enviando

Intent intent = new Intent(Banks.this, Cards.class); 
          intent.putExtra("selectedBanksAndAllCards", (Serializable) selectedBanksAndAllCards); 
          startActivityForResult(intent, 50000); 

en la actividad receptora

Intent intent = getIntent(); 
    HashMap<String, ArrayList<String>> hashMap = (HashMap<String, ArrayList<String>>) intent.getSerializableExtra("selectedBanksAndAllCards"); 

cuando envío un HashMap como seguir,

Map<String,ArrayList<String>> selectedBanksAndAllCards = new HashMap<>(); 

espero que sería hel p por alguien.

Cuestiones relacionadas