2011-07-19 34 views
2

* 初始化變量列表保存到文件的Android

String serfilename; 

List<HashMap<String, String>> painItems = new ArrayList<HashMap<String, String>>(); 

上創建方法

public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 
setContentView(R.layout.addscreen); 
//getPainItems from the saved file 
if(loadListFromFile((ArrayList<HashMap<String, String>>) painItems) != 
     null) 
    painItems = loadListFromFile((ArrayList<HashMap<String, String>>) 
     painItems); 
} 

LOAD列表從文件的方法

private ArrayList<HashMap<String, String>> loadListFromFile(

    ArrayList<HashMap<String, String>> masterlistrev) { 
try { 

    FileInputStream fis = openFileInput(serfilename); 
    ObjectInputStream ois = new ObjectInputStream(fis); 
    masterlistrev = (ArrayList<HashMap<String, String>>) ois.readObject(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
return masterlistrev; 
} 

寫列表中文件的方法

private void writeListToFile(ArrayList<HashMap<String, String>> masterlistrev){ 

    File myfile = getFileStreamPath(serfilename); 
    try { 
     if(myfile.exists() || myfile.createNewFile()){ 
      FileOutputStream fos = openFileOutput(serfilename, MODE_PRIVATE); 
      ObjectOutputStream oos = new ObjectOutputStream(fos); 
      oos.writeObject(masterlistrev); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

} 

的onStop()方法

protected void onStop(){ 
    super.onStop(); 
    writeListToFile((ArrayList<HashMap<String, String>>) painItems); 
} 

我得到一個空指針異常的文件MYFILE = getFileStreamPath(serfilename);.我該如何解決這個問題..有沒有更好的方法來做到這一點...?

回答

1

根據您粘貼的內容,您的serfilenamenull,並且從未設置爲路徑。

這就是說,即使沒有這一切,

File myfile = getFileStreamPath(serfilename); 

預計將拋出一個NullPointerException由於你(空)輸入。

說服自己。嘗試:

if(null == serfilename) 
    throw new RuntimeException ("serfilename is null!"); 

File myfile = getFileStreamPath(serfilename); 
+0

我明白了,但我不知道如何解決這個問題......你能提供一個替代方法/解決方案嗎?我如何將'serfilename'設置爲路徑? – Kgrover

+0

不需要。問題解決了。謝謝! – Kgrover