Android 在类中实现parcelable以将其从一个活动传递到另一个活动

Android 在类中实现parcelable以将其从一个活动传递到另一个活动,android,object,android-intent,parcelable,parcel,Android,Object,Android Intent,Parcelable,Parcel,我有一个班的学生 我试图使用seriablizable,但无法使其工作。。。这不太管用。有人能发现它有什么毛病吗? 在它的变量中使用班级学期和课程 public class Student implements Parcelable { private double GPA, MGPA; private LinkedList<Course> finishedcourses; private String username, password; private Semester sem

我有一个班的学生 我试图使用seriablizable,但无法使其工作。。。这不太管用。有人能发现它有什么毛病吗? 在它的变量中使用班级学期和课程

public class Student implements Parcelable {
private double GPA, MGPA;
private LinkedList<Course> finishedcourses;
private String username, password;
private Semester semester;


public Student(String user, String pass, double gpa, double mgpa,
        LinkedList<Course> fc, Semester s) {
    username = user;
    password = pass;
    GPA = gpa;
    MGPA = mgpa;
    semester = s;
    finishedcourses = fc;
}

@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel out, int flags) {
    out.writeString(username);
    out.writeString(password);
    out.writeDouble(GPA);
    out.writeDouble(MGPA);
    out.writeParcelable((Parcelable) finishedcourses , flags);
    out.writeParcelable((Parcelable) semester, flags);

}


public static final Creator<Student> CREATOR = new Parcelable.Creator<Student> (){
    public Student createFromParcel(Parcel in) {
        return new Student(in); 
    }

    public Student[] newArray(int size) {
        return new Student[size];
    }
};


public Student(Parcel in)
{
    username = in.readString();
    password = in.readString();
    GPA = in.readDouble();
    MGPA = in.readDouble();
    finishedcourses = in.readParcelable(Course.class.getClassLoader());
    semester = in.readParcelable(Semester.class.getClassLoader());
}}
公共班级学生实现可包裹{
私人双GPA,MGPA;
私人链接列表完成课程;
私有字符串用户名、密码;
私人学期;
公立学生(字符串用户、字符串通行证、双gpa、双mgpa、,
LinkedList fc,学期s){
用户名=用户;
密码=通过;
平均绩点=平均绩点;
MGPA=MGPA;
学期=s;
完成课程=fc;
}
@凌驾
公共int描述内容(){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共无效写入包(包出,内部标志){
out.writeString(用户名);
out.writeString(密码);
可减记市盈率(GPA);
外写双倍(MGPA);
可写可塞((可包裹)已完成的课程、旗帜);
可写可塞((可包裹)学期,旗帜);
}
public static final Creator=new Parcelable.Creator(){
公立学生createFromParcel(包裹中){
返回新学生(在);
}
公立学生[]新数组(整数大小){
返回新学生[大小];
}
};
公立学生(包裹内)
{
username=in.readString();
password=in.readString();
GPA=in.readDouble();
MGPA=in.readDouble();
finishedcourses=in.readParcelable(Course.class.getClassLoader());
sement=in.readParcelable(sement.class.getClassLoader());
}}
这是本学期的课程:

public class Semester implements Parcelable{
private LinkedList<Course> current;
private int Credits;

public Semester(LinkedList<Course> current) {
    super();
    this.current = current;
    Credits = calcCredits();
}

@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
    out.writeInt(Credits);
    out.writeParcelable((Parcelable) current, flags);

}


public Semester(Parcel in) {
    Credits = in.readInt();
    current = in.readParcelable(Course.class.getClassLoader());
}


public static final Creator<Semester> CREATOR = new Parcelable.Creator<Semester>() {
    public Semester createFromParcel(Parcel in)
    {
        return new Semester(in);
    }

    @Override
    public Semester[] newArray(int size) {
        // TODO Auto-generated method stub
        return new Semester[size];
    }
};}
公共类学期实现可包裹{
私有链接列表当前;
私人积分;
公共学期(LinkedList当前){
超级();
这个电流=电流;
信用=calcCredits();
}
@凌驾
公共int描述内容(){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共无效写入包(包出,内部标志){
外写(学分);
out.writeparceable((可包裹)当前,标志);
}
公共学期(包裹内){
Credits=in.readInt();
current=in.readParcelable(Course.class.getClassLoader());
}
public static final Creator=new Parcelable.Creator(){
公共地块(地块内)
{
返回新学期(中);
}
@凌驾
公共学期[]新数组(整数大小){
//TODO自动生成的方法存根
返回新学期[大小];
}
};}
这是课堂课程

public class Course implements Parcelable{  
private int credits;
private String LetterGrade,Name;

public Course(int credits, String Name, String Letter) {
this.Name = Name;
LetterGrade = Letter;
this.credits = credits;
}


@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel out, int flags) {
    out.writeString(Name);
    out.writeString(LetterGrade);
    out.writeInt(credits);
}
public static final Creator<Course> CREATOR = new Parcelable.Creator<Course>() {

    @Override
    public Course createFromParcel(Parcel in) {
        return new Course(in);
    }

    @Override
    public Course[] newArray(int size) {

        return new Course[size];
    }

};
public Course (Parcel in){
    Name = in.readString();
    LetterGrade = in.readString();
    credits = in.readInt();
}}
公共类课程实现可包裹{
私人积分;
私有字符串字母等级、名称;
公共课程(整数学分、字符串名称、字符串字母){
this.Name=Name;
字母等级=字母;
这个。学分=学分;
}
@凌驾
公共int描述内容(){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共无效写入包(包出,内部标志){
out.writeString(名称);
外写线(LetterGrade);
外写(学分);
}
public static final Creator=new Parcelable.Creator(){
@凌驾
公共课程createFromParcel(地块中){
返回新课程(中);
}
@凌驾
公共课程[]新数组(整数大小){
返回新课程[大小];
}
};
公共课程(包裹内){
Name=in.readString();
LetterGrade=in.readString();
credits=in.readInt();
}}

在学生课堂上尝试以下方法:

//initialize the list
private LinkedList<Course> finishedcourses = new LinkedList<Course>();

@Override
public void writeToParcel(Parcel out, int flags) {
    out.writeString(username);
    out.writeString(password);
    out.writeDouble(GPA);
    out.writeDouble(MGPA);
    //replace by writeTypedList
    out.writeTypedList(finishedcourses);
    out.writeParcelable(semester, flags);
}


public Student(Parcel in)
{
    username = in.readString();
    password = in.readString();
    GPA = in.readDouble();
    MGPA = in.readDouble();
    //replace by readTypedList
    in.readTypedList(finishedcourses, Course.CREATOR);
    semester = in.readParcelable(Semester.class.getClassLoader());
}
//初始化列表
private LinkedList finishedcourses=新建LinkedList();
@凌驾
公共无效写入包(包出,内部标志){
out.writeString(用户名);
out.writeString(密码);
可减记市盈率(GPA);
外写双倍(MGPA);
//替换为writeTypedList
out.writeTypedList(已完成课程);
可写入(学期、旗帜);
}
公立学生(包裹内)
{
username=in.readString();
password=in.readString();
GPA=in.readDouble();
MGPA=in.readDouble();
//替换为readTypedList
in.readTypedList(已完成课程、课程.CREATOR);
sement=in.readParcelable(sement.class.getClassLoader());
}

对当前列表
私有链接列表执行相同操作在课堂上。在学生课堂上试试这个:

//initialize the list
private LinkedList<Course> finishedcourses = new LinkedList<Course>();

@Override
public void writeToParcel(Parcel out, int flags) {
    out.writeString(username);
    out.writeString(password);
    out.writeDouble(GPA);
    out.writeDouble(MGPA);
    //replace by writeTypedList
    out.writeTypedList(finishedcourses);
    out.writeParcelable(semester, flags);
}


public Student(Parcel in)
{
    username = in.readString();
    password = in.readString();
    GPA = in.readDouble();
    MGPA = in.readDouble();
    //replace by readTypedList
    in.readTypedList(finishedcourses, Course.CREATOR);
    semester = in.readParcelable(Semester.class.getClassLoader());
}
//初始化列表
private LinkedList finishedcourses=新建LinkedList();
@凌驾
公共无效写入包(包出,内部标志){
out.writeString(用户名);
out.writeString(密码);
可减记市盈率(GPA);
外写双倍(MGPA);
//替换为writeTypedList
out.writeTypedList(已完成课程);
可写入(学期、旗帜);
}
公立学生(包裹内)
{
username=in.readString();
password=in.readString();
GPA=in.readDouble();
MGPA=in.readDouble();
//替换为readTypedList
in.readTypedList(已完成课程、课程.CREATOR);
sement=in.readParcelable(sement.class.getClassLoader());
}

对当前列表
私有链接列表执行相同操作在课堂上。在学生课堂上试试这个:

//initialize the list
private LinkedList<Course> finishedcourses = new LinkedList<Course>();

@Override
public void writeToParcel(Parcel out, int flags) {
    out.writeString(username);
    out.writeString(password);
    out.writeDouble(GPA);
    out.writeDouble(MGPA);
    //replace by writeTypedList
    out.writeTypedList(finishedcourses);
    out.writeParcelable(semester, flags);
}


public Student(Parcel in)
{
    username = in.readString();
    password = in.readString();
    GPA = in.readDouble();
    MGPA = in.readDouble();
    //replace by readTypedList
    in.readTypedList(finishedcourses, Course.CREATOR);
    semester = in.readParcelable(Semester.class.getClassLoader());
}
//初始化列表
private LinkedList finishedcourses=新建LinkedList();
@凌驾
公共无效写入包(包出,内部标志){
out.writeString(用户名);
out.writeString(密码);
可减记市盈率(GPA);
外写双倍(MGPA);
//替换为writeTypedList
out.writeTypedList(已完成课程);
可写入(学期、旗帜);
}
公立学生(包裹内)
{
username=in.readString();
password=in.readString();
GPA=in.readDouble();
MGPA=in.readDouble();
//替换为readTypedList
in.readTypedList(已完成课程、课程.CREATOR);
sement=in.readParcelable(sement.class.getClassLoader());
}

对当前列表
私有链接列表执行相同操作在课堂上。在学生课堂上试试这个:

//initialize the list
private LinkedList<Course> finishedcourses = new LinkedList<Course>();

@Override
public void writeToParcel(Parcel out, int flags) {
    out.writeString(username);
    out.writeString(password);
    out.writeDouble(GPA);
    out.writeDouble(MGPA);
    //replace by writeTypedList
    out.writeTypedList(finishedcourses);
    out.writeParcelable(semester, flags);
}


public Student(Parcel in)
{
    username = in.readString();
    password = in.readString();
    GPA = in.readDouble();
    MGPA = in.readDouble();
    //replace by readTypedList
    in.readTypedList(finishedcourses, Course.CREATOR);
    semester = in.readParcelable(Semester.class.getClassLoader());
}
//初始化列表
private LinkedList finishedcourses=新建LinkedList();
@凌驾
公共无效令状