2010-09-29 67 views
67

我想一個HashMap通過使用intent.puExtra功能的新活動。步進通過調試似乎它增加了HashMap中沒有問題,但是當startActivty()被調用時,我得到一個運行時錯誤,指出包裹:不能編組值com.appName.Liquor。AndroidRuntime錯誤:包裹:不能編組值

酒是我創建了一個自定義類,而且我相信,在一個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類是原因,但我無法弄清楚原因。

您的幫助將不勝感激。謝謝!

回答

169

HashMap本身是可序列化,但在Bottle類序列化?如果沒有,它將不會序列化,並會在運行時拋出錯誤。 使Bottle類實現java.io.Serializable接口

+3

謝謝,我不得不將實現Serializable添加到Liquor和Bottle類。 – Jared 2010-09-30 15:37:34

+1

它的工作..我必須在Bottle類中實現Serializable。謝謝@naikus – 2014-01-21 08:48:59

+103

酒始終是責備:)) – 2014-07-04 10:43:02