Estoy tratando de pasar un HashMap a una nueva actividad usando la función intent.puExtra. Al pasar por el depurador, parece que agrega el HashMap sin problema, sin embargo, cuando se llama a startActivty (), aparece un error de tiempo de ejecución que indica que Parcel: no se puede calcular el valor com.appName.Liquor.
Liquor es una clase personalizada que creé y creo que, en combinación con un HashMap, está causando el problema. Si paso una cadena en lugar de mi HashMap, carga la siguiente actividad sin problema.
Actividad principal
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String cat = ((TextView) view).getText().toString();
Intent i = new Intent(OhioLiquor.this, Category.class);
i.putExtra("com.appName.cat", _liquorBase.GetMap());
startActivity(i);
Clase de licor
public class Liquor
{
public String name;
public int code;
public String category;
private HashMap<String, Bottle> _bottles;
public Liquor()
{
_bottles = new HashMap<String, Bottle>();
}
public void AddBottle(Bottle aBottle)
{
_bottles.put(aBottle.size, aBottle);
}
}
Actividad secundaria
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
HashMap<Integer, Liquor> map = (HashMap<Integer, Liquor>)getIntent().getSerializableExtra("com.appName.cat");
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, GetNames(map)));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
Cuando existe el error de tiempo de ejecución, nunca llega a la clase de subactividad. Así que estoy bastante seguro de que el problema existe al agregar el HashMap a la intención, y basándome en el error, creo que mi clase Liquor es la causa, pero no puedo entender por qué.
Su ayuda será muy apreciada. ¡Gracias!