【发布时间】:2011-04-18 15:20:07
【问题描述】:
我正在尝试使用 intent.puExtra 函数将 HashMap 传递给新活动。单步调试调试器似乎添加了 HashMap 没问题,但是当调用 startActivty() 时,我收到一个运行时错误,指出 Parcel:无法编组值 com.appName.Liquor。
Liquor 是我创建的自定义类,我相信它与 HashMap 结合使用会导致问题。如果我传递一个字符串而不是我的 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 添加到意图中,并且基于错误我相信我的 Liquor 类是原因,但我不知道为什么。
您的帮助将不胜感激。谢谢!
【问题讨论】: