2013-09-21 23 views
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에 저장해야하는 메서드가 있습니다. 나는 나의 새로운 LogList의 값의 순서를 변경하면 내 응용 프로그램을 닫고 다시 후

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(); } 
} 

어떤 도움을 주시면 감사하겠습니다.

한 가지를 들어
+0

"날짜"가 정확합니다. Parameters 변수 ("LogBody")의 대소 문자가 매개 변수 ("LogBody")의 대소 문자와 다르므로 LogBody 및 LogSubject는 사용되지 않습니다. – paulsm4

+0

그런 작은 실수로 고칠 시간이 많이 들었습니다. 도와 주셔서 감사합니다! 변수를 전환하면 이제 제대로 작동합니다. – user2802899

답변

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()에 전화를 필요가 없습니다.

+0

답변 해 주셔서 감사합니다. 나는 변수를 바꿨고 이제는 제대로 작동한다. – user2802899

+0

@ user2802899 -이 대답을 "upvote"하고 "accept"로 표시해야합니다. :) – paulsm4