Android序列化麻烦

时间:2012-09-15 17:46:31

标签: android serialization

我正在尝试保存位置列表,但无法序列化位置。为了管理它,我创建了一个名为simpleLocation的类来实现Serialize,并且只有纬度和经度的双精度:

public class simpleLocation implements Serializable
{
    private static final long serialVersionUID = 10001L;
    double lat = 0.0;
    double lon = 0.0;

    public simpleLocation()
    {}
    public void setLat(double l)
    {
        lat = l;
    }
    public void setLon(double l)
    {
        lon = l;
    }
    private double getLat()
    {
        return lat;
    }
    public double getLon()
    {
        return lon;
    }

}

据我所知,我不需要任何其他东西,这个类应该是可序列化的。 (然后,我对序列化的了解非常有限)。

我将Locations的ArrayList转换为simpleLocations的ArrayList,然后尝试将其写出来:

// dropDownList is a Spinner

private void internalSave()
{
    try{
        // get my internal directory
        String filename = "" + dropDownList.getSelectedItemPosition() + ".ser";
        FileOutputStream fileOut = openFileOutput(filename, Context.MODE_PRIVATE);
        ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);

        // convert Locations to simpleLocations
        ArrayList<simpleLocation> simple = convertToSimpleLocation();
        // write out
        for(int i=0; i<simple.size(); i++)
        {
            objectOut.writeObject(simple.get(i));
        }

        objectOut.flush();
        objectOut.close();
            Toast.makeText(this, "Write complete", Toast.LENGTH_SHORT);
    }catch (Exception e)
    {
            Toast.makeText(this, "Error with Internal Save:\n"+e.toString(), Toast.LENGTH_SHORT);
        e.printStackTrace();
    }
}

每次尝试使用此方法时都会遇到java.io.NotSerializeableException,我无法弄清楚出了什么问题。我确信这是我忽略的一些简单的事情,但如果有人能指出这一点,我会非常感激。

编辑:想出来,我需要在simpleLocation类中使用writeObject方法。

0 个答案:

没有答案