2013-10-14 4 views
0

Я пытаюсь передать ArrayList<Polygon> с помощью intent.putExtra().ArrayList Serializable Android

Я получаю 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> провести список точек многоугольника с несколькими добытчиками и сеттеров, это все. У меня есть Serializable в классе Polygon, но я получаю это исключение из вышеуказанного кода.

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

Без проводки реализации (код), вы, вероятно, не получите много полезной помощь. – Geobits

+0

HI Я добавил код. – jonny

+0

Ну, когда я это сказал, я имел в виду код из класса «Полигон», который обрабатывает сериализацию. ** Но **, так как вы разместили это, что такое 'this.polygons', и зачем вам его бросать в' ArrayList '? Я предположил, что это уже будет этот тип. – Geobits

ответ

0

Если в вашем классе Polygon используется android.graphics.Point, вы должны использовать Parcelable, потому что Point реализует Parcelable, а не Serializable.

При использовании сериализации необходимо добавить следующее разрешения на манифест:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
Смежные вопросы