場所のリストを保存しようとしていますが、場所をシリアル化できません。それを管理するために、Serialize を実装し、緯度と経度の double のみを持つ 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;
}
}
私の知る限りでは、他に何も必要なく、このクラスはシリアライズ可能である必要があります。(繰り返しになりますが、シリアライゼーションに関する私の知識は非常に限られています)。
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 メソッドが必要でした。