0

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

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;
    }

}

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

我将位置的 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 方法。

4

0 回答 0