2011-07-19 41 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