0

我有一个应用程序,它将获取用户的分数,将其保存到当前的分数列表中,然后显示所有分数。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 正是我使用的教程中的代码,它在我运行它时有效,所以应该是正确的选项。但由于 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();
    }
4

2 回答 2

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.

于 2014-12-09T16:59:43.817 回答
1

采用context.openFileOutput.

但也要给 saveScores() 一个布尔返回值。如果有捕获,则返回 false。如果您调用它,则检查返回值。

于 2014-12-09T17:01:54.857 回答