我正在开发一个Android应用程序,当应用程序关闭时,我希望它将特定数组的内容保存到文件中,这样当应用程序打开备份时我可以读取它的内容回到一个数组。
我可能错了,但根据我的理解,我应该这样做的方法是onStop()方法。
结果是当我点击主页按钮时,应用程序关闭然后给我“不幸的是,你的应用程序崩溃了”的消息。我已经尝试运行调试器,我的代码似乎正确执行,包括.close()命令,但之后似乎发生了一些事情。以下是我的代码,非常感谢任何帮助!
@Override
public void onStop()
{
try{
FileOutputStream fOut = openFileOutput("savedVinyls", Context.MODE_PRIVATE);
String vinylString = "Test";
fOut.write(vinylString.getBytes());
fOut.close();
}
catch(IOException OE){
OE.getStackTrace();
}
}
答案 0 :(得分:5)
这是因为您没有调用onStop超类实现。从谷歌API库引用:
派生类必须调用超类的实现 这种方法。如果他们不这样做,将抛出异常。
因此,如果重写Activity的onStop方法,则必须在自定义方法的开头调用super.onStop()。试试:
@Override
public void onStop()
{
super.onStop();
try{
FileOutputStream fOut = openFileOutput("savedVinyls", Context.MODE_PRIVATE);
String vinylString = "Test";
fOut.write(vinylString.getBytes());
fOut.close();
}
catch(IOException OE){
OE.getStackTrace();
}
}
答案 1 :(得分:1)
我会使用outputStreamWriter
,它允许您将字符串写入文件,而不仅仅是字节:
String test = "Test";
try{
File outputFile = new File("your/file/name.txt");
OutputStream outStream = new FileOutputStream(outputFile);
OutputStreamWriter osWriter = new OutputStreamWriter(outStream);
System.out.println("Writing data in file..!!");
osWriter.write(str1);
osWriter.close();
}
catch(IOException OE){
OE.getStackTrace();
}
另外,正如frogmanx所说,你需要在你的方法中包含'super.onStop()`。