Android多个parcelable构造函数

时间:2014-05-18 05:51:37

标签: java android oop parcelable

我有一个对象类,我需要有两个构造函数。 防爆。

//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,但是这个案例呢? 我应该如何识别调用哪个构造函数,以便创建正确的包裹?

1 个答案:

答案 0 :(得分:1)

您可以使用Parcel.dataSize()

  

返回宗地中包含的数据总量。

Parcel.dataAvail()

  

返回要从宗地中读取的剩余数据量。那   是,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];
       }
   };