Parcelable protocol requires a Parcelable.Creator object called。。。。。

来源:互联网 发布:电子音乐专业制作软件 编辑:程序博客网 时间:2024/06/06 13:46
[java] view plaincopyprint?
  1. public class Person implements Parcelable{  
  2.        
  3.      // 成员变量  
  4.      private int id;  
  5.      private String name;  
  6.        
  7.      // 1.必须实现Parcelable.Creator接口,否则在获取Person数据的时候,会报错,如下:  
  8.      // android.os.BadParcelableException:  
  9.      // Parcelable protocol requires a Parcelable.Creator object called  CREATOR on class com.um.demo.Person  
  10.      // 2.这个接口实现了从Percel容器读取Person数据,并返回Person对象给逻辑层使用  
  11.      // 3.实现Parcelable.Creator接口对象名必须为CREATOR,不如同样会报错上面所提到的错;  
  12.      // 4.在读取Parcel容器里的数据事,必须按成员变量声明的顺序读取数据,不然会出现获取数据出错  
  13.      // 5.反序列化对象  
  14.      public static final Parcelable.Creator<Person> CREATOR = new Creator(){  
  15.    
  16.          @Override  
  17.          public Person createFromParcel(Parcel source) {  
  18.              // TODO Auto-generated method stub  
  19.              // 必须按成员变量声明的顺序读取数据,不然会出现获取数据出错  
  20.              Person p = new Person();  
  21.              p.setId(source.readInt());  
  22.              p.setName(source.readString());  
  23.              return p;  
  24.          }  
  25.    
  26.          @Override  
  27.          public Person[] newArray(int size) {  
  28.              // TODO Auto-generated method stub  
  29.              return new Person[size];  
  30.          }  
  31.      };  
  32.        
  33.      public int getId() {  
  34.          return id;  
  35.      }  
  36.    
  37.      public void setId(int id) {  
  38.          this.id = id;  
  39.      }  
  40.    
  41.      public String getName() {  
  42.          return name;  
  43.      }  
  44.    
  45.      public void setName(String name) {  
  46.          this.name = name;  
  47.      }  
  48.    
  49.      @Override  
  50.      public int describeContents() {  
  51.          // TODO Auto-generated method stub  
  52.          return 0;  
  53.      }  
  54.    
  55.      @Override  
  56.      public void writeToParcel(Parcel dest, int flags) {  
  57.          // TODO Auto-generated method stub  
  58.          // 1.必须按成员变量声明的顺序封装数据,不然会出现获取数据出错  
  59.          // 2.序列化对象  
  60.          dest.writeInt(id);  
  61.          dest.writeString(name);  
  62.      }  
  63.  }