我有一个对象类,我需要有两个构造函数。 防爆。
//first constructor
public MyObject(int contract_id, String id, String title, String body) {
super();
this.contract_id = contract_id;
this.id = id;
this.title = title;
this.body = body;
}
//second constructor with extra parameters
public MyObject(int contract_id, String id, String title, String body,String time,String nickName) {
super();
this.contract_id = contract_id;
this.id = id;
this.title = title;
this.body = body;
this.time=time;
this.nickName=nickName;
}
问题是我知道如何为一个具有一个构造函数的对象做parcelable,但是这个案例呢? 我应该如何识别调用哪个构造函数,以便创建正确的包裹?
答案 0 :(得分:1)
您可以使用Parcel.dataSize()
返回宗地中包含的数据总量。
返回要从宗地中读取的剩余数据量。那 是,dataSize() - dataPosition()。
F.e。定义一个构造函数,它将Parcel作为参数并检查剩余的数据:
MyObject(Parcel in) {
this.contract_id = in.readInt();
this.id = in.readString();
this.title = in.readString();
this.body = in.readString(); // till here both constructors have same data
if (in.dataAvail() > 0) { // check for the extra data
this.time = in.readString();
this.nickName = in.readString();
}
}
在CREATOR中使用此构造函数,如下所示:
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public MyObject createFromParcel(Parcel in) {
return new MyObject(in);
}
public MyObject[] newArray(int size) {
return new MyObject[size];
}
};