Fragment之間使用Bundle傳遞對象,數據,序列化,集合

一.首先將對象序列化

序列化的作用
1)永久性保存對象,保存對象的字節序列到本地文件中;
2)通過序列化對象在網絡中傳遞對象;
3)通過序列化在進程間傳遞對象。
兩種方法序列化.

  • 一是實現Serializable接口(是JavaSE本身就支持的),implement Serializable一下就可以了
  • 二是實現Parcelable接口(是Android特有功能,效率比實現Serializable接口高效,可用于Intent數據傳遞,也可以用于進程間通信(IPC))。
  • 效率更高,推薦用Parcelable提高性能。
  • 盡管Serializable效率低點,但Parcelable不能使用在要將數據存儲在磁盤上的情況,因為Parcelable在外界有變化的情況下不能很好的保證數據的持續性.(需要服務器返回數據變更了,或許你能體驗到~)

Serializable 序列化的實現

比較方便,效率沒Parcelable高

public class Test implements Serializable {
}

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");
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容