2012-05-08 28 views
0

有人可以解釋爲什麼這段代碼不起作用嗎?getParcelableExtra奇怪的行爲(鍵X預期Parcelable,但值是Y)

Intent i = new Intent(this.context, SomeClass.class); 
HashMap<String, String> tmp1 = new HashMap<String, String>(); 
Log.d(TAG, "IN: " + String.valueOf(tmp1)); 
i.putExtra("VAR", tmp1); 
HashMap<String, String> tmp2 = i.getParcelableExtra("VAR"); 
Log.d(TAG, "OUT: " + String.valueOf(tmp2)); 

我希望得到:

  • HashMap的 parcellable。 tmp1應該等於tmp2

我真正得到(logcat的):

  • 調試:IN:{}
  • 警告:重點VAR預計Parcelable但價值是java.util.HashMap。返回了默認值<null>。投產生嘗試內部異常:
  • 警告java.lang.ClassCastException: java.util.HashMap
  • 調試:OUT:空

回答

2

我認爲你錯了,HashMapParcelable。然而,它是Serializable,所以你把一個Serializable額外,並試圖讀取它作爲Parcelable,這會導致錯誤。

+0

你說得對!謝謝。 – wrygiel