我正在尝试使用ArrayList<Polygon>
传递intent.putExtra()
。
我得到 IOException 编写可序列化对象(name = Polygon.polygon)。
Polygon是我制作的一个类,它在这个类上实现了Serializable。
Intent intent = new Intent(this, Main.class);
intent.putExtra("polygons", (ArrayList<Polygon>)this.polygons);
startActivity(intent);
Polygon类有一个ArrayList<Point>
来保存带有几个getter和setter的多边形的点列表,即all。我在Polygon类上实现了Serializable,但是我从上面的代码中获得了异常。
public class Polygon implements Serializable{
ArrayList<Point> polygon;
public Polygon(){
polygon = new ArrayList();
}
public int getSize(){
return polygon.size();
}
public ArrayList<Point> getPointArray(){
return this.polygon;
}
public void addPoint(int x, int y, int mapWidth, int mapHeight, int canvasWidth, int canvasHeight){
//going to scale up here
float scaleX = mapWidth / canvasWidth;
float scaleY = mapHeight / canvasHeight;
polygon.add(new Point((int)(x*scaleX),(int)(y*scaleY)));
}
public void removePoint(int index){
polygon.remove(index);
}
}
有什么想法吗?
答案 0 :(得分:0)
如果您在Polygon类中使用了android.graphics.Point,那么您应该使用Parcelable,因为Point实现了Parcelable而不是Serializable。
如果使用序列化,则需要向Manifest添加以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>