Fragment之间使用Bundle传递对象,数据,序列化,集合

一.首先将对象序列化

序列化的作用
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");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值