【发布时间】:2012-08-29 11:52:02
【问题描述】:
我有一个简单的 Track 类,它存储有关路线的信息:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import android.location.Location;
public class Track implements Serializable {
private static final long serialVersionUID = -5317697499269650204L;
private Date date;
private String name;
private int time;
private double distance, speed;
private ArrayList<Location> route;
public Track(String name, int time, double distance, ArrayList<Location> route) {
this.date = new Date();
this.name = name;
this.time = time;
this.distance = distance;
this.speed = distance / (time / 3600.);
this.route = route;
}
public String getDate() {
return String.format("Date: %1$td-%1$tb-%1$tY%nTime: %1$tH:%1$tM:%1$tS", date);
}
public String getName() {
return name;
}
public int getTime() {
return time;
}
public double getDistance() {
return distance;
}
public float getSpeed() {
return (float) speed;
}
public ArrayList<Location> getRoute() {
return route;
}
@Override
public String toString() {
return String.format("Name: %s%nDate: %2$td-%2$tb-%2$tY%nTime: %2$tH:%2$tM:%2$tS", name, date);
}
}
我将它从一个活动传递到另一个活动:
Intent showTrackIntent = new Intent(TabSavedActivity.this, ShowTrackActivity.class);
showTrackIntent.putExtra("track", adapter.getItem(position));
startActivity(showTrackIntent);
在哪里(Track 对象是 ListView 上的元素)。 传递 Track 对象时出错:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = classes.Track)
发生了什么?
【问题讨论】:
-
你应该实现 Parcalabe 接口。
-
这个错误是因为你的私有变量没有设置器,所以序列化过程没有办法设置这些变量。尝试编写设置器和测试并发布任何错误。
-
@eternalmatt 的评论毫无意义,因为您在 写入 对象(即:序列化它)时遇到错误,因此您不需要设置器。在任何情况下,Java 序列化都不需要 setter 或 getter 方法。
-
序列化不需要设置器。
标签: android location serializable parcelable