我的应用有SplashScreen
和MainActivity
。在MainActivity
中,FrameLayout
被片段取代。但这只是一个基本的理解,我不认为我的问题确实需要它。
在我的SplashScreen中,我正在检查内部存储器上是否存在文件。如果是,它会被读出来。如果没有,则从互联网上下载。到现在为止还挺好。现在,当用户在MainActivity中时,他有不同的选项。根据该选项,将打开片段并显示数据。这些数据不同。所以现在我想在SplashScreen中做同样的事情。检查文件是否存在。如果是,请将其读出,否则从Internet下载。我遇到的问题是,似乎通过Fragments无法进行读写。这是对的吗?
该片段标出AsyncTask并应在那里进行下载。
这是Fragment中用于写入文件的代码
private void writeToFile(String data, String filename) {
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput( filename, MODE_PRIVATE));
outputStreamWriter.write(data);
outputStreamWriter.close();
}
catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
}
但我遇到的问题是MODE_PRIVATE
- 我遇到的错误是MODE_PRIVATE cannot be resolved to a variable
。如何在片段中将模式设置为私有?
然后,当我想要读取文件时,它就像SplashScreen一样工作
inputStream = openFileInput ( filepath )
但是在片段中我得到了错误
The method openFileInput(String) is undefined for the type WeekFragment.MainAsyncTask
我究竟如何编写和读取片段中的文件?
答案 0 :(得分:4)
MODE_PRIVATE是Context类的常量。因此,您可以使用Context.MODE_PRIVATE
从任何地方访问它。
所以在你的代码中使用像
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(getActivity().openFileOutput( filename, Context.MODE_PRIVATE));
答案 1 :(得分:0)
这在片段中对我有用
//reading text from the file
FileInputStream fileIn = getActivity().openFileInput("FragmentFile.txt");
和
//write text to file
try {
FileOutputStream fileout = getActivity().openFileOutput("FragmentFile.txt", MODE_PRIVATE);
OutputStreamWriter outputWriter = new OutputStreamWriter(fileout);
outputWriter.write(response.toString());
outputWriter.close();
} catch (Exception e) {
e.printStackTrace();
}}