WEB开发网
开发学院手机开发Android 开发 android用Intent传输自定对象数组(Parcelable[])失... 阅读

android用Intent传输自定对象数组(Parcelable[])失败

 2010-11-05 00:55:33 来源:WEB开发网   
核心提示:问题场景描述: 从远程服务器获得一堆数据,组装为 groups childs cards三个对象,android用Intent传输自定对象数组(Parcelable[])失败,让后通过Intent传给UI去更新数据的显示,三个对象的结构: groups{ 一些java基本类型,说明数组到Object的转换出了问题,我认

问题场景描述: 从远程服务器获得一堆数据,组装为 groups childs cards三个对象,让后通过Intent传给UI去更新数据的显示。

三个对象的结构: groups{ 一些java基本类型, ... , childs[ ] mchild } childs{一些基本类型, .... , cards mcard } cards{一些基本类型}

三个对象都不算大,成员不超过20个。都实现了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 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对象是成功的.

Tags:android Intent 传输

编辑录入:coldstar [复制链接] [打 印]
赞助商链接