Java Android-在我的onStop()方法中写入文件正在使我的应用程序崩溃
我正在开发一个android应用程序,当应用程序关闭时,我希望它将特定数组的内容保存到一个文件中,这样当应用程序被打开时,我可以将其内容读回数组中 我可能错了,但根据我的理解,我应该使用的方法是onStop()方法 结果是,当我按下home(主页)按钮时,应用程序关闭,然后给我“不幸的是,你的应用程序已崩溃”消息。我试过运行调试器,我的代码在.close()命令之前(包括该命令)似乎都能正确执行,但之后似乎发生了一些事情。下面是我的代码,非常感谢您的帮助Java Android-在我的onStop()方法中写入文件正在使我的应用程序崩溃,java,android,Java,Android,我正在开发一个android应用程序,当应用程序关闭时,我希望它将特定数组的内容保存到一个文件中,这样当应用程序被打开时,我可以将其内容读回数组中 我可能错了,但根据我的理解,我应该使用的方法是onStop()方法 结果是,当我按下home(主页)按钮时,应用程序关闭,然后给我“不幸的是,你的应用程序已崩溃”消息。我试过运行调试器,我的代码在.close()命令之前(包括该命令)似乎都能正确执行,但之后似乎发生了一些事情。下面是我的代码,非常感谢您的帮助 @Override public vo
@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();
}
}
我将使用
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()” 我会使用
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()” 这是因为您没有调用onStop超类实现。引用自谷歌API库: 派生类必须调用超类的实现 这种方法的优点。如果没有,将抛出异常 因此,如果重写活动的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();
}
}
这是因为您没有调用onStop超类实现。引用自谷歌API库: 派生类必须调用超类的实现 这种方法的优点。如果没有,将抛出异常 因此,如果重写活动的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();
}
}
你能包括StackTrace吗?你能包括StackTrace吗?你是个天才!我不知道那是我必须打电话的事。哎呀!非常感谢,我花了太多的时间在这件事上,以为问题出在别的地方。你真是个天才!我不知道那是我必须打电话的事。哎呀!非常感谢,我花了比我应该花的更多的时间在这件事上,认为问题出在其他方面。谢谢你,我一直在想怎么做这样的事!:)我还不能!没有足够的代表。一旦我有足够的选票,我一定会:D还有5个。应该足够了;)谢谢你,我一直在想怎么做这样的事!:)我还不能!没有足够的代表。一旦我有足够的选票,我一定会:D还有5个。应该足够了;)