2013-09-21 45 views
0

所以我正在做一個記事本應用程序,記錄日期輸入,主題和正文文本字段。當我點擊我的發佈按鈕時,所有內容都正確顯示在我的ListView中,但是當我關閉應用程序並重新打開它時,只有日期保持不變,其他兩個值爲NULL。以下是我正在使用的代碼。試圖保存對象的自定義數組Android

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

「日期」是正確的。參數LogBody和LogSubject從不使用,因爲變量(「logBody」)的大小寫與參數(「LogBody」)的大小寫不同。 – 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」這個答案並將其標記爲「接受」:) – paulsm4

相關問題