Android内部对象存储
我正在尝试将EditText的ArrayList(ArrayOne、ArrayTwo和ArrayTree)保存到内部存储器中。如评论所述,它清楚地表明它试图保存,但此后我再也没有得到祝酒词。感谢您提供有关为什么不显示“保存完成”或任何错误的帮助Android内部对象存储,android,object,storage,Android,Object,Storage,我正在尝试将EditText的ArrayList(ArrayOne、ArrayTwo和ArrayTree)保存到内部存储器中。如评论所述,它清楚地表明它试图保存,但此后我再也没有得到祝酒词。感谢您提供有关为什么不显示“保存完成”或任何错误的帮助 public void save(Context c) { String fileName; Toast.makeText(this, "Attempting Save", Toast.LENGTH_SHORT).show();//THI
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 */ }
}
}
}
我认为这个错误出现在您的第一个Try块中,因为您只捕获了FileNotFound和IOException-仅出于调试目的,您可以捕获通用异常并打印出stacktrace 如果它也有帮助的话,这就是我所做的: java.io.File file = new java.io.File("/sdcard/mystorage/ArrayOne.bin"); ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file))); out.writeObject(obj); out.close(); java.io.File File=new java.io.File(“/sdcard/mystorage/ArrayOne.bin”); ObjectOutputStream out=新的ObjectOutputStream(新的BufferedOutputStream(新的FileOutputStream(文件))); out.writeObject(obj); out.close(); 最好的
-serkan如果在“尝试保存”之后没有显示任何内容,则此块中会出现异常
catch (IOException e)
{
e.printStackTrace();
}
你不会在任何祝酒词中看到它。此外,您也可以在这里以这种方式不做任何事情,除了您的例外:
catch (Exception e)
{ /* do nothing */ }
而不是为你的留言干杯。。尝试使用LogCat进行去bug,这很容易使用,而且您不需要在代码中添加toast代码。告诉我进展如何。问题是EditText类不可序列化 如果调试并在printStackTrace上设置断点,然后检查IOException,它会告诉您
catch (IOException e
{
e.printStackTrace();
}
类必须使用“implements Serializable”,以便将它们作为对象写入,而EditText没有
您也不能扩展该类并添加serializable标记,因为基础类仍将引发异常
我建议您要么通过自己的类序列化数据,要么保存试图使用其他方法执行的任何操作 你好,你试过调试吗?它是否显示“找不到”?我尝试过调试,在“尝试保存”之后没有显示任何内容。我不知道代码从哪里来。请尝试调试。如果你调试它,你将不需要任何其他人的帮助来解决这个问题。只要跟踪代码的去向,就可以完成:)我可以制作一个包含EditText的文本的字符串的ArrayList。。。字符串是否可序列化?感谢you@Andrew-是的,基本类型应该序列化很好,字符串可以序列化dok,你能告诉我什么地方可以解释如何“通过我自己的类序列化数据”@Andrew,看看上面的扩展答案,但是记住如果你在类中放入任何类型的不可序列化对象,你也会遇到同样的问题