问题场景描述: 从远程服务器获得一堆数据,组装为 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对象是成功的.

更多相关文章

  1. Android(安卓)Binder框架实现之Parcel详解之read/writeStrongBin
  2. AIDL源码解析in、out和inout
  3. ListView加载多套布局
  4. Android快速开发框架dyh详解(四)---数据层的使用
  5. Android(安卓)对集合对象排序(快排与实现接口排序)
  6. 检查网络连接状况
  7. 初学Android,图形图像之使用drawBitmapMesh扭曲图像(三十二)
  8. Android(安卓)数据显示在屏幕上
  9. Android源码分析-全面理解Context

随机推荐

  1. Lottie开源库实现Android动画效果
  2. Android再按一次退出
  3. Android默认USB为host模式
  4. android 开发使用 kotlin 进行点击事件监
  5. mtk android tp 调试
  6. Android AsyncTask异步实现大文件下载
  7. android创建可拖动的悬浮窗,并实现点击回
  8. Android中的WiFi P2P
  9. Android 热修复(腾讯bugly)
  10. android 存储操作 大小显示换算 kb mb KB