0

場所のリストを保存しようとしていますが、場所をシリアル化できません。それを管理するために、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 メソッドが必要でした。

4

0 に答える 0