android用Intent傳輸自定對象數組(Parcelable[])失敗

問題場景描述: 從遠程服務器獲得一堆數據,組裝爲 groups childs cards三個對象,讓後通過Intent傳給UI去更新數據的顯示。

三個對象的結構: groups{ 一些java基本類型, ... , childs[ ] mchild } childs{一些基本類型, .... , cards mcard } cards{一些基本類型}

三個對象都不算大,成員不超過20個。後2個實現了Serializable接口。

失敗描述:用Intent.putExtra() 邦定groups對象數組 A

用mintent.getSerializableExtra()取得A並賦給groups對象數組B, 測試法現B爲空。不能獲得想要的對象數組.
跟蹤代碼,

Intent.java:
public Intent putExtra(String name, Parcelable[] value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putParcelableArray(name, value);
return this;
}

Bundle.java:
Map<String, Object> mMap = null;

public void putParcelableArray(String key, Parcelable[] value) {
unparcel();
mMap.put(key, value);
mFdsKnown = false;
}

用 if(value instanceof Object){
Log.d("******","Object[] equal Object");
} 去測試,log信息打印出來,
說明往map裏面存的過程是OK的?
可是在Debug模式下 putExtra(String name, Parcelable[] value) 之後,查看intent的值,
確只有2個key--value:
key1------value1:4 存的應該是我的對象數組的大小
key2------value2:CustomerGroup[] 這裏就點不開了,正常情況下應該是可以點開,裏面存着成員,
說明數組到Object的轉換出了問題,我認爲應該轉爲Object[].
有興趣的朋友一起討論下!晚上回家有時間的話搞個測試看看。
補充下,傳單個的groups對象是成功的.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章