Fragment之间使用Bundle传递对象,数据,序列化,集合
2017-02-23 13:51
423 查看
一.首先将对象序列化
序列化的作用1)永久性保存对象,保存对象的字节序列到本地文件中;
2)通过序列化对象在网络中传递对象;
3)通过序列化在进程间传递对象。
两种方法序列化.
一是实现Serializable接口(是JavaSE本身就支持的),implement Serializable一下就可以了一是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。
效率更高,推荐用Parcelable提高性能。
尽管Serializable效率低点,但Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable在外界有变化的情况下不能很好的保证数据的持续性.
Parcelable 序列化的实现
/** * Created by SwmIsMe on 2017/2/23. */ public class Test implements Parcelable { private String name; private String sex; protected Test(Parcel in) { name = in.readString(); sex = in.readString(); } public static final Creator<Test> CREATOR = new Creator<Test>() { @Override public Test createFromParcel(Parcel in) { return new Test(in); } @Override public Test[] newArray(int size) { return new Test[size]; } }; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeString(sex); } }
二.使用Bundle封装数据
// 创建一个 bundle 传递 数据 Bundle bundle = new Bundle(); //使用bundle合适的put方法传递数据 bundle.putSerializable("projectList", (Serializable) projectList); // 新建一个 fragment ProjectFragment fragment = new ProjectFragment(); // 将数据 保存到 fragment 里面 fragment.setArguments(bundle);
三.在Fragment里面获取bundle的数据
@Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Bundle bundle = getArguments(); mProjects = (List<HometabProject>) bundle.getSerializable("projectList"); }
相关文章推荐
- android中传递复杂参数,activity之间和fragment之间的bundle传递集合/对象
- android中传递复杂参数,activity之间和fragment之间的bundle传递集合/对象
- 使用意图在Activity之间传递数据小插曲__传递自定义的序列化对象
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- android中传递复杂参数,activity之间和fragment之间的bundle传递集合/对象
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- 【Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用】的改进!
- Android中级教程之(五)----->不同Activity之间的数据传递,Bundle对象的使用!
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android笔记三.不同Activity之间的传递数据(Bundle对象的使用)
- 不同Activity之间的数据传递---Bundle对象的实现
- Android入门篇四:使用剪切板在Activity之间传递对象数据
- 使用bundle在多个activity之间传递数据
- activity和activity之间传递数据(字符串、集合、对象)
- 使用bundle在Activity之间传递数据
- Bundle对象实现不同Activity之间数据传递
- 不同Activity之间传递数据--Bundle对象和startActivityForResult方法的实现
- 求助:如果直接将hibernate的ORM映射对象序列化了传递到gwt里去,并且使用了集合映射,就会出现这个错误