我正在尝试保存位置列表,但无法序列化位置。为了管理它,我创建了一个名为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方法。