0

我正在尝试通过ArrayList<Polygon>using intent.putExtra()

我得到IOException写入可序列化对象(名称=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 的多边形的点列表,仅此而已。我在 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);
    }
}

有任何想法吗?

4

1 回答 1

0

如果您在 Polygon 类中使用的是android.graphics.Point,那么您应该使用Parcelable,因为 Point 实现了 Parcelable 而不是 Serializable。

如果使用序列化,您需要在 Manifest 中添加以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
于 2014-04-14T13:38:17.827 回答