所以我正在创建一个记事本应用程序,记录输入的日期,主题和正文文本字段。当我点击我的帖子按钮时,一切都在我的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(); }
}
非常感谢任何帮助!
答案 0 :(得分: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()
,因为您没有扩展任何类。