- publicclassPersonimplementsParcelable{
- //成员变量
- privateintid;
- privateStringname;
- //1.必须实现Parcelable.Creator接口,否则在获取Person数据的时候,会报错,如下:
- //android.os.BadParcelableException:
- //ParcelableprotocolrequiresaParcelable.CreatorobjectcalledCREATORonclasscom.um.demo.Person
- //2.这个接口实现了从Percel容器读取Person数据,并返回Person对象给逻辑层使用
- //3.实现Parcelable.Creator接口对象名必须为CREATOR,不如同样会报错上面所提到的错;
- //4.在读取Parcel容器里的数据事,必须按成员变量声明的顺序读取数据,不然会出现获取数据出错
- //5.反序列化对象
- publicstaticfinalParcelable.Creator<Person>CREATOR=newCreator(){
- @Override
- publicPersoncreateFromParcel(Parcelsource){
- //TODOAuto-generatedmethodstub
- //必须按成员变量声明的顺序读取数据,不然会出现获取数据出错
- Personp=newPerson();
- p.setId(source.readInt());
- p.setName(source.readString());
- returnp;
- }
- @Override
- publicPerson[]newArray(intsize){
- //TODOAuto-generatedmethodstub
- returnnewPerson[size];
- }
- };
- publicintgetId(){
- returnid;
- }
- publicvoidsetId(intid){
- this.id=id;
- }
- publicStringgetName(){
- returnname;
- }
- publicvoidsetName(Stringname){
- this.name=name;
- }
- @Override
- publicintdescribeContents(){
- //TODOAuto-generatedmethodstub
- return0;
- }
- @Override
- publicvoidwriteToParcel(Parceldest,intflags){
- //TODOAuto-generatedmethodstub
- //1.必须按成员变量声明的顺序封装数据,不然会出现获取数据出错
- //2.序列化对象
- dest.writeInt(id);
- dest.writeString(name);
- }
- }
Parcelable protocol requires a Parcelable.Creator object called。。。。。
最新推荐文章于 2020-01-17 17:53:49 发布