Android - 我的onStop()方法中的文件写入正在崩溃我的应用程序

时间:2013-08-18 02:04:48

标签: java android

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

    }
}

2 个答案:

答案 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()`。