android用Intent传输自定对象数组(Parcelable[])失败
16lz
2021-01-26
问题场景描述: 从远程服务器获得一堆数据,组装为 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对象是成功的.
三个对象的结构: 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对象是成功的.
更多相关文章
- Android(安卓)Binder框架实现之Parcel详解之read/writeStrongBin
- AIDL源码解析in、out和inout
- ListView加载多套布局
- Android快速开发框架dyh详解(四)---数据层的使用
- Android(安卓)对集合对象排序(快排与实现接口排序)
- 检查网络连接状况
- 初学Android,图形图像之使用drawBitmapMesh扭曲图像(三十二)
- Android(安卓)数据显示在屏幕上
- Android源码分析-全面理解Context