本文将带你了解Android应用开发adnroid中的序列化之自定义类内部变量,希望本文对大家学Android有所帮助。
对于基础的String,int等java支持的Parcelable类,简单写一下写入和读取就可以了,对于含有成员是自己写的Parcelable类有些不同,差别也不大。
代码如下,定义个Parcelable类
package com.xue.qin.demo.myparcelableclass;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by xue.qin on 2017/6/5.
*/
public class MyObject implements Parcelable {
private int n;
private String name;
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUseless() {
return useless;
}
public void setUseless(String useless) {
this.useless = useless;
}
private String useless;
public MyObject(){
n=0;
name="default";
useless="default";
}
public MyObject(int n, String name, String useless) {
this.n = n;
this.name = name;
this.useless = useless;
}
public MyObject(Parcel source) {
readFromParcel(source);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(n);
dest.writeString(name);
dest.writeString(useless);
}
public void readFromParcel(Parcel source) {
this.n = source.readInt();
this.name = source.readString();
this.useless = source.readString();
}
public static final Parcelable.Creator CREATOR = new Creator() {
@Override
public MyObject createFromParcel(Parcel source) {
MyObject myObject2 = new MyObject(source);
return myObject2;
}
@Override
public MyObject[] newArray(int size) {
return new MyObject[size];
}
};
@Override
public String toString() {
return "( n:" + n + " name:" + name + " useless:" + useless + " 地址:" + super.toString() + " )";
}
}
另一Parcelable类包含上一个MyObject的成员
package com.xue.qin.demo.myparcelableclass;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by qinxue on 2018/4/4.
*/
public class OuterClassObj implements Parcelable {
private String content;
private MyObject myObject;
private OuterClassObj(Parcel source) {
content = source.readString();
myObject = source.readParcelable(MyObject.class.getClassLoader());
}
public OuterClassObj(String content, MyObject myObject) {
this.content = content;
this.myObject = myObject;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(content);
parcel.writeParcelable(myObject, i);
}
public static final Parcelable.Creator CREATOR = new Creator() {
@Override
public OuterClassObj createFromParcel(Parcel source) {
OuterClassObj outerObj = new OuterClassObj(source);
return outerObj;
}
@Override
public OuterClassObj[] newArray(int size) {
return new OuterClassObj[size];
}
};
@Override
public String toString() {
return " content: "+content + " myObject = "+myObject;
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!