Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在尝试将自定义对象数组保存到Android_Java_Android - Fatal编程技术网

Java 正在尝试将自定义对象数组保存到Android

Java 正在尝试将自定义对象数组保存到Android,java,android,Java,Android,所以我制作了一个记事本应用程序,记录输入的日期、主题和正文字段。当我点击我的post按钮时,所有内容都正确地显示在我的ListView中,但是当我关闭应用程序并重新打开它时,只有日期保持不变,其他两个值为空。下面是我正在使用的代码 public class LogList implements Serializable { private String logDate; private String logBody; private String logSubject; public LogL

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

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中

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

    lts.add(lt);

    saveAllLogs();
}
现在,如果我更改新日志列表中值的顺序,在我关闭并重新打开应用程序后,只有第一个值会正确显示。下面是我的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(); }
}
private ArrayList loadFromFile(){
ArrayList日志=新建ArrayList();
试一试{
FileInputStream fis=openFileInput(文件名);
ObjectInputStream ois=新ObjectInputStream(fis);
while(true){
LogList lt=(LogList)ois.readObject();
添加(lt.toString());
添加(lt);
}
} 
catch(FileNotFoundException e){e.printStackTrace();}
catch(IOE异常){e.printStackTrace();}
catch(ClassNotFoundException e){e.printStackTrace();}
返回日志;
}
私有void saveAllLogs(){
试一试{
FileOutputStream fos=openFileOutput(文件名,0);
ObjectOutputStream oos=新的ObjectOutputStream(fos);
用于(日志列表lti:lts){
oos.writeObject(lti);
}
fos.close();
}
catch(FileNotFoundException e){e.printStackTrace();}
catch(IOE异常){e.printStackTrace();}
}
任何帮助都将不胜感激

首先

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()
,因为您没有扩展任何类。

“date”是正确的。从不使用参数LogBody和LogSubject,因为变量(“LogBody”)的情况与参数(“LogBody”)的情况不同。我讨厌这样一个小错误花费了我几个小时试图修复。谢谢你的帮助!切换了变量,现在可以正常工作了。谢谢你的回答。我切换了变量,现在可以正常工作了。