Android Parcel初识
2015-09-05 13:23
435 查看
先附上一个连接,这里讲的非常详细,感谢此文作者http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html
用Parcelable序列化的对象例子如下,writeToParcel方法里的dest.writeXX顺序要与createFromParcel中parcel.readXX一致,类中一定要有public static final Parcelable.Creator<Phone> CREATOR,否则会抛异常 :
09-05 01:21:13.696: E/AndroidRuntime(1049): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test2/com.example.test2.ActivityA}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.example.test2.bean.Phone
package com.example.test2.bean;
import android.os.Parcel;
import android.os.Parcelable;
public class Phone implements Parcelable {
public String model;
public float size;
public String manufacture;
public Phone(String manufacture, String model, float size) {
this.manufacture = manufacture;
this.model = model;
this.size = size;
}
public Phone(Parcel in) {
this.manufacture = in.readString();
this.model = in.readString();
this.size = in.readFloat();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(manufacture);
dest.writeString(model);
dest.writeFloat(size);
}
public static final Parcelable.Creator<Phone> CREATOR = new Creator<Phone>() {
@Override
public Phone createFromParcel(Parcel source) {
return new Phone(source);
}
@Override
public Phone[] newArray(int size) {
return new Phone[size];
}
};
public String toString() {
return manufacture + ", " + model + ", " + size + "寸";
}
}
用Parcelable序列化的对象例子如下,writeToParcel方法里的dest.writeXX顺序要与createFromParcel中parcel.readXX一致,类中一定要有public static final Parcelable.Creator<Phone> CREATOR,否则会抛异常 :
09-05 01:21:13.696: E/AndroidRuntime(1049): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test2/com.example.test2.ActivityA}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.example.test2.bean.Phone
package com.example.test2.bean;
import android.os.Parcel;
import android.os.Parcelable;
public class Phone implements Parcelable {
public String model;
public float size;
public String manufacture;
public Phone(String manufacture, String model, float size) {
this.manufacture = manufacture;
this.model = model;
this.size = size;
}
public Phone(Parcel in) {
this.manufacture = in.readString();
this.model = in.readString();
this.size = in.readFloat();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(manufacture);
dest.writeString(model);
dest.writeFloat(size);
}
public static final Parcelable.Creator<Phone> CREATOR = new Creator<Phone>() {
@Override
public Phone createFromParcel(Parcel source) {
return new Phone(source);
}
@Override
public Phone[] newArray(int size) {
return new Phone[size];
}
};
public String toString() {
return manufacture + ", " + model + ", " + size + "寸";
}
}
相关文章推荐
- android中.9.png图片
- 如何检查后台服务(Android的Service类)是否正在运行?
- Android下Json文件解析
- 倍数提高工作效率的Android Studio奇技
- 【Android进阶】-Android组合的方式自定义控件
- Android(java)学习笔记209:采用get请求提交数据到服务器(qq登录案例)
- Android学习系列之(六)Fragment初涉
- Android:使用fragment(碎片)—让你的应用更灵活(一)简单运用
- Android Universal Image Loader 源码分析
- android图片压缩终极解决方案
- Android中JNI的使用方法
- android6.0进入Material Design时代
- android-百度地图
- Android延时执行调用的几种方法
- Android的Tween动画与控制动画的Interpolator
- android 的service
- android-Fragment和Activity通信:将Fragment中的数据传入Activity
- Android Api Demos登顶之路(五十七)Service Remote Service Binding options
- Android 实现适配器中的子控件与Activity通信
- Android ListView —— Adapter, BaseAdapter, RecycleBin