私はこのクラスを持っています:
public class SaveState implements Serializable {
private static final long serialVersionUID = 1L;
public List<String> downloadedMagazinesIds = new ArrayList<String>();//id's de revistas descargadas
public List<String> downloadedMagazinesSummaries = new ArrayList<String>();//página sumario de cada magazine
public List<FullMagazine> downloadedMagazines = new ArrayList<FullMagazine>();//todos los magazines bajados
public Magazines ms=null; //Esta clase contiene el array de previews de revistas generado con el parser de XML
}
これらのメソッドを使用して、クラス (SaveState オブジェクト) を SD カードに保存し、ファイルからオブジェクトを再度オブジェクトに読み込みます。
public static void saveData(){
ObjectOutput out;
try {
//primero comprobamos si existe el directorio, y si no, lo creamos.
File folder = new File(Environment.getExternalStorageDirectory() + "/C/");
if(!folder.exists())
folder.mkdirs();
File outFile = new File(Environment.getExternalStorageDirectory(), "/C/appSaveState.data");
out = new ObjectOutputStream(new FileOutputStream(outFile));
out.writeObject(saveState);
out.close();
} catch (Exception e) {e.printStackTrace();}
}
public static void loadData(){
ObjectInput in;
try {
File inFile = new File(Environment.getExternalStorageDirectory(), "/C/appSaveState.data");
in = new ObjectInputStream(new FileInputStream(inFile));
saveState=(SaveState) in.readObject();
in.close();
} catch (Exception e) {e.printStackTrace();}
}
オブジェクトを保存し、アプリを閉じるたびに、アプリを開くたびにSDカードからオブジェクトを読み取り、正常に動作します。アプリの新しいバージョン (1.01) を作成したときに問題が発生します。アプリを起動してSDカードからファイルを読み取ろうとすると、ファイルは読み取られますが、オブジェクトクラスのすべての変数は空であり、実際には空ではありません.
コードが正しく動作しないのはなぜですか? 修正するにはどうすればよいですか?