BadParcelableException:Parcelable protocol requires a Parcelable 错误
来源:互联网 发布:qq影音mac官方下载 编辑:程序博客网 时间:2024/06/07 07:07
在Android中的不同Activity之间传递对象,采用Bundle.putParcelable(Key, Object)时,在实现Parcelable接口的时候要注意一下方面;
/**
* 必须实现Parcelable.Creator接口,否则在获取该类数据的时候会报错*
* android.os.BadParcelableException:Parcelable protocol requires a
* Parcelable.Creator object called CREATOR on class
*
* Parcelable.Creator接口实现了从Parcel容器读取本对象(Teacher)数据,并返回该对象给逻辑层使用
*
* Parcelable.Creator接口对象名必须为CREATOR,否则同样会报上述同样的错误;
*
* 在读取Parcel容器中的数据事,必须按成员变量声明的顺序来读取数据,不然会出现获取数据错误;
*
* 反序列化对象
*/
Teacher.java
package com.cn;import android.os.Parcel;import android.os.Parcelable;public class Teacher implements Parcelable {/** * BadParcelableException:Parcelable protocol requires a Parcelable.Creator * object called CREATOR on class *///成员变量private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}/** * 必须实现Parcelable.Creator接口,否则在获取该类数据的时候会报错 * * android.os.BadParcelableException:Parcelable protocol requires a * Parcelable.Creator object called CREATOR on class * * Parcelable.Creator接口实现了从Parcel容器读取本对象(Teacher)数据,并返回该对象给逻辑层使用 * * Parcelable.Creator接口对象名必须为CREATOR,否则同样会报上述同样的错误; * * 在读取Parcel容器中的数据事,必须按成员变量声明的顺序来读取数据,不然会出现获取数据错误; * * 反序列化对象 */public static final Parcelable.Creator<Teacher> CREATOR = new Creator<Teacher>() {@Overridepublic Teacher createFromParcel(Parcel source) {// 必须按成员变量的顺序读取数据,不然会出现获取数据报错Teacher teacher = new Teacher();teacher.setName(source.readString());teacher.setAge(source.readInt());return teacher;}@Overridepublic Teacher[] newArray(int size) {// TODO Auto-generated method stubreturn new Teacher[size];}};@Overridepublic int describeContents() {// TODO Auto-generated method stubreturn 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {// 必须按成员变量声明的顺序封装数据,不然会出现获取数据报错// 序列化对象dest.writeString(name);dest.writeInt(age);}}
Teacher teacher = new Teacher();teacher.setName("老师");teacher.setAge(33);Intent intent = new Intent(First_Activity.this,Second_Activity.class);Bundle bundle = new Bundle();bundle.putParcelable("teacher", teacher);intent.putExtras(bundle);startActivity(intent);
Activity接收数据的主要代码
// 通过实现Parcelable接口后接收数据txt_5 = (TextView) findViewById(R.id.txt_5);Bundle bundle = getIntent().getExtras();Teacher teacher = (Teacher) bundle.getParcelable("teacher");txt_5.setText(teacher.getName() + "---" + teacher.getAge());
0 0
- BadParcelableException:Parcelable protocol requires a Parcelable 错误
- android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator错误解决
- Parcelable protocol requires a Parcelable.Creator object called。。。。。
- Parcelable protocol requires a Parcelable.Creator object called。。。。。
- Parcelable protocol requires a Parcelable.Creator object called CREATOR on class xxx
- Parcelable
- Parcelable
- Parcelable
- Parcelable
- Parcelable
- Parcelable
- Parcelable
- Parcelable
- Parcelable
- Parcelable
- Parcelable
- parcelable
- Parcelable
- poj 3061 尺取法
- 驯裁轮菊干站沉胖屑倏轿腋烈呕夹
- #笔记#圣思园 JavaWeb 第65讲——jQuery,选择器
- map 用法详解
- hdu 1575 try a 矩阵快速幂
- BadParcelableException:Parcelable protocol requires a Parcelable 错误
- 九度OJ 题目1031:xxx定律
- session与cookie的区别
- 图的深度遍历
- iOS 使用category将复杂的类拆分
- CodeForces #Pi D.One-Dimensional Battle Ships
- 九大排序算法总结
- GDOI模拟 20150806
- 数据离散化