1

我正在开发一个 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();

    }
}
4

2 回答 2

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();

    }
}
于 2013-08-18T02:18:31.460 回答
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()”。

于 2013-08-18T02:16:39.343 回答