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
接口