我有一个应用程序将获取用户的分数,将其保存到当前的分数列表,然后显示所有分数。 saveScores方法位于HighScores类中,但将从用户输入其名称的Activity中调用。
因为该方法是在java类而不是Android活动中,所以我无法使代码工作。我尝试了两个选项,每个选项都有不同的错误:
选项1:
FileOutputStream fileout=openFileOutput("highScores.txt", Context.MODE_PRIVATE);
//ERROR: The method openFileOutput(String, int) is undefined for the type HighScore.
选项2:
FileOutputStream fileout=openFileOutput("highScores.txt", MODE_PRIVATE);
//ERROR: MODE_PRIVATE cannot be resolved to a variable
选项1正是我使用的tutorial中的代码,它在我运行时起作用,因此应该是正确的选项。但是由于java类中没有上下文,我认为这就是它遇到麻烦的地方。 除了将整个方法移动到活动之外,还有什么方法可以完成这项工作吗?
对于它的价值,这是整个saveFile方法:
public void saveScores(Context context, ArrayList<Score> scores){
// save to file
try{
String allScores ="";
FileOutputStream fileout=openFileOutput("highScores.txt", Context.MODE_PRIVATE); // The line in question.
OutputStreamWriter outputWriter=new OutputStreamWriter(fileout);
for (int i=0; i<scores.size(); i++)
allScores += ((i+1)+". "+scores.get(i).toString()+"\n");
outputWriter.write(allScores);
outputWriter.close();
}catch(FileNotFoundException e){
System.out.println("SaveScores ERROR: File Not Found.");
}catch(IOException e){
System.out.println("SaveScores ERROR: See Stack Trace below.");
e.printStackTrace();
}
答案 0 :(得分:2)
此:
FileOutputStream fileout=openFileOutput("highScores.txt", Context.MODE_PRIVATE);
应该使用:
FileOutputStream fileout=context.openFileOutput("highScores.txt", Context.MODE_PRIVATE);
你得到了:
FileOutputStream fileout=openFileOutput("highScores.txt", Context.MODE_PRIVATE);
//ERROR: The method openFileOutput(String, int) is undefined for the type HighScore.
因为它在你的HighScore课程中寻找openFileOutput
方法,因为它不属于Context
,因此你不会找到它,因为它不具备/需要它。
答案 1 :(得分:1)
使用context.openFileOutput.
但也给saveScores()一个布尔返回值。如果有捕获,则返回false。如果你打电话,那就检查返回值。