私はこのシリアル化可能なクラスを持っています。これは、バイナリ ファイルに文字列の ArrayList を格納するために使用します。
public class SaveState implements Serializable{
public static ArrayList <String> favoriteBusStopNumbers = new ArrayList<String>();
public static SaveState instance=new SaveState();
}
この配列が保存する必要があるデータでいっぱいになったら、このメソッドを使用して、文字列のarrayListでインスタンスを保存します。
public static void saveData(){
ObjectOutput out;
try {
//primero comprobamos si existe el directorio, y si no, lo creamos.
File folder = new File(Environment.getExternalStorageDirectory() + DIRECTORY_NAME);
if(!folder.exists())
folder.mkdirs();
File outFile = new File(Environment.getExternalStorageDirectory(), DIRECTORY_NAME+"appSaveState.data");
out = new ObjectOutputStream(new FileOutputStream(outFile));
out.writeObject(SaveState.instance);
out.close();
} catch (Exception e) {e.printStackTrace();}
}
最後に、アプリの init でこのメソッドを使用してファイルを読み込み、SaveState.instance 変数に以前に保存したデータを入力します。
public static void loadData(){
ObjectInput in;
try {
File inFile = new File(Environment.getExternalStorageDirectory(), DIRECTORY_NAME+"appSaveState.data");
in = new ObjectInputStream(new FileInputStream(inFile));
SaveState.instance=(SaveState) in.readObject();
in.close();
} catch (Exception e) {e.printStackTrace();}
}
データを保存すると、ファイルはデータのオブジェクト フィルで正しく作成されています。ファイルのディスク容量が 0KB を超えているためです。しかし、アプリを起動してデータをロードすると、SaveState.instance 変数が文字列の空の ArrayList を取得するため、ここで何か問題が発生しています。コードの何が問題なのですか?
ありがとう