AndroidRuntime错误:包裹:无法编组值

我正在尝试使用intent.puExtra函数将HashMap传递给一个新的活动。 通过debugging程序似乎它增加了HashMap没有问题,但是当startActivty()被调用时,我得到一个运行时错误,指出Parcel:无法封送值com.appName.Liquor。

Liquor是我创build的一个自定义类,我相信它和HashMap结合在一起导致了这个问题。 如果我传递一个string而不是我的HashMap它加载下一个活动没有问题。

主要活动

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); 

酒类

 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); } } 

子活动

 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); 

当运行时错误存在时,它永远不会进入子活动类。 所以我很确定问题存在于添加HashMap的意图,基于错误,我相信我的酒类是原因,但我不明白为什么。

您的帮助将不胜感激。 谢谢!

你的HashMap本身是可序列化的,但是Bottle类是可序列化的? 如果没有,它将不会序列化,并会在运行时抛出错误。 使Bottle类实现java.io.Serializable接口