Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-在我的onStop()方法中写入文件正在使我的应用程序崩溃_Java_Android - Fatal编程技术网

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

Java Android-在我的onStop()方法中写入文件正在使我的应用程序崩溃,java,android,Java,Android,我正在开发一个android应用程序,当应用程序关闭时,我希望它将特定数组的内容保存到一个文件中,这样当应用程序被打开时,我可以将其内容读回数组中 我可能错了,但根据我的理解,我应该使用的方法是onStop()方法 结果是,当我按下home(主页)按钮时,应用程序关闭,然后给我“不幸的是,你的应用程序已崩溃”消息。我试过运行调试器,我的代码在.close()命令之前(包括该命令)似乎都能正确执行,但之后似乎发生了一些事情。下面是我的代码,非常感谢您的帮助 @Override public vo

我正在开发一个android应用程序,当应用程序关闭时,我希望它将特定数组的内容保存到一个文件中,这样当应用程序被打开时,我可以将其内容读回数组中

我可能错了,但根据我的理解,我应该使用的方法是onStop()方法

结果是,当我按下home(主页)按钮时,应用程序关闭,然后给我“不幸的是,你的应用程序已崩溃”消息。我试过运行调试器,我的代码在.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();

    }
}

我将使用
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个。应该足够了;)