0

所以我正在制作一个记事本应用程序,它记录输入的日期、主题和正文字段。当我点击我的发布按钮时,所有内容都正确显示在我的 ListView 中,但是当我关闭应用程序并重新打开它时,只有日期保持不变,其他两个值为 NULL。下面是我正在使用的代码。

public class LogList implements Serializable {
private String logDate;
private String logBody;
private String logSubject;

public LogList(String date, String LogBody, String LogSubject){
    super();
    this.logDate = date;
    this.logBody = logBody;
    this.logSubject = logSubject;
}

回到我的主类,我的方法应该将三个值保存到 ArrayList lts 中。

private void saveInFile(String subject_text, String date, String body_text ){
    LogList lt = new LogList(date, subject_text, body_text);

    lts.add(lt);

    saveAllLogs();
}

现在,如果我更改新 LogList 中值的顺序,则在我关闭应用程序并重新打开它后,只有第一个值会正确显示。以下是我的 saveAllLogs 方法和我的 loadFromFile 方法。

private ArrayList<String> loadFromFile(){
    ArrayList<String> logs = new ArrayList<String>();
    try {
        FileInputStream fis = openFileInput(FILENAME);
        ObjectInputStream ois = new ObjectInputStream(fis);
        while (true) {
            LogList lt = (LogList) ois.readObject();
            logs.add(lt.toString());
            lts.add(lt);
        }
    } 
    catch (FileNotFoundException e) { e.printStackTrace(); }
    catch (IOException e) { e.printStackTrace(); }
    catch (ClassNotFoundException e) { e.printStackTrace(); }
    return logs;
}

private void saveAllLogs() {
    try {
        FileOutputStream fos = openFileOutput(FILENAME, 0);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        for (LogList lti : lts) {
            oos.writeObject(lti);
        }
        fos.close();
    }
    catch (FileNotFoundException e) { e.printStackTrace(); }
    catch (IOException e) { e.printStackTrace(); }
}

任何帮助将不胜感激!

4

1 回答 1

1

一方面,

public LogList(String date, String LogBody, String LogSubject){
    super();
    this.logDate = date;
    this.logBody = logBody;
    this.logSubject = logSubject;
}

似乎错了。由于您已将参数名称大写,但您将成员设置为小写名称。

你的意思是:

public LogList(String date, String logBody, String logSubject){
    super();
    this.logDate = date;
    this.logBody = logBody;
    this.logSubject = logSubject;
}

编辑:微不足道的事情,不影响您的代码:您不需要super()在构造函数中调用,因为您没有扩展任何类。

于 2013-09-21T20:55:25.303 回答