Estoy intentando pasar un HashMap a una actividad nueva utilizando la función intent.puExtra. Al pasar por el depurador, parece que no agrega ningún problema al HashMap; sin embargo, cuando se llama a startActivty(), aparece un error de tiempo de ejecución que indica que Parcel: no se puede ordenar el valor com.appName.Liquor.Error de AndroidRuntime: Parcel: no se puede ordenar el valor
Liquor es una clase personalizada que he creado, 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 problemas.
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);
licor Clase
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);
}
}
Sub Actividad
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 ejecución nunca lo hace en la clase de actividad sub. Así que estoy bastante seguro de que existe un problema al agregar HashMap a la intención, y basado en el error, creo que mi clase de Licor es la causa, pero no puedo entender por qué.
Su ayuda será muy apreciada. ¡Gracias!
Gracias, tuve que agregar implementos Serializable a las clases de Licor y Botella. – Jared
funciona ... Tengo que implementar Serializable en la clase Botella. Gracias @naikus –
El licor siempre tiene la culpa :)) –