我正在尝试将EditText的ArrayLists(ArrayOne、ArrayTwo和ArrayThree)保存到内部存储器。正如所评论的,它清楚地表明它试图保存,但在那之后我再也没有得到过敬酒。任何帮助,因为它不显示“保存已完成”或任何错误是感激的。
public void save(Context c)
{
String fileName;
Toast.makeText(this, "Attempting Save", Toast.LENGTH_SHORT).show();//THIS SHOWS
if(semester.getText().toString().length() == 0)
{
Toast.makeText(c, "Please enter a filename", Toast.LENGTH_SHORT).show();
}
else
{
fileName = "test.dat";
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try
{
fos = this.openFileOutput(fileName, Context.MODE_PRIVATE);
oos = new ObjectOutputStream(fos);
oos.writeObject(ArrayOne);
oos.writeObject(ArrayTwo);
oos.writeObject(ArrayThree);
Toast.makeText(c, "Save Completed", Toast.LENGTH_SHORT).show(); //THIS NEVER SHOWS
}
catch (FileNotFoundException e)
{
Toast.makeText(c, "Could not find " + fileName + " to save.", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (oos != null)
oos.close();
if (fos != null)
fos.close();
}
catch (Exception e)
{ /* do nothing */ }
}
}
}发布于 2011-07-08 00:39:15
问题是EditText类是不可序列化的
如果您调试并在printStackTrace上设置断点并检查IOException,它会告诉您
catch (IOException e
{
e.printStackTrace();
} 类必须使用“实现可序列化”才能将它们写出为对象,这是EditText所没有的。
您也不能扩展类并添加可序列化标记,因为底层类仍然会抛出异常。
我建议您通过您自己的类序列化数据,或者保存您尝试使用其他方法执行的任何操作。
发布于 2011-07-07 22:24:35
如果在“尝试保存”之后什么也没有显示,你就会在这个块中得到一些异常。
catch (IOException e)
{
e.printStackTrace();
} 而且你不会在任何Toast中看到它。你也可以在这里以这种方式对你的异常什么都不做:
catch (Exception e)
{ /* do nothing */ }而不是为你的信息干杯..尝试使用LogCat来进行除虫,它很容易使用,而且你不需要在代码中放入toast代码。告诉我进展如何。
https://stackoverflow.com/questions/6583083
复制相似问题