如何在我的java游戏中保存玩家名称和得分?

时间:2013-02-22 11:49:02

标签: java android save indexoutofboundsexception

我正在制作我的第一款Android游戏。我希望将用户名和得分保存到文件中并稍后阅读。我正在尝试使用arraylist存储5个用户对象。我不知道如何有效地写入该文件并将其读回并存储在arraylist中。如果你知道另一种更好的方式,请告诉我。 这是我用来写的方法。

public static void save(FileIO file) {
    preferences = file.getSharedPref();
    Editor editor = preferences.edit();
    for(int i=0;i<5;i++){
        editor.putString("username"+String.valueOf(i), User.userList.get(i).userName);
        editor.putInt("userscore"+String.valueOf(i), User.userList.get(i).highScore);
        }
    editor.commit();
}

这是我用来阅读的方法。

public static void read(FileIO file) {
    preferences = file.getSharedPref();
    for(int i=0;i<5;i++){
        User.userList.get(i).userName=preferences.getString("username"+String.valueOf(i), "abc");
        User.userList.get(i).highScore=preferences.getInt("userscore"+String.valueOf(i), 0);
    }

}

这就是我试图展示我的高分的循环。 for(int i=0;i<5;i++){ g.drawString(String.valueOf(i+1)+"."+String.valueOf(User.userList.get(i).userName), 100, y, paint); g.drawString(String.valueOf(User.userList.get(i).highScore),150, y, paint2); y+=80; }

我正在获取indexoutofbounds异常

1 个答案:

答案 0 :(得分:3)

当您希望存储值时:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(Your_Activity.this);

Editor editor = sp.edit();
editor.putString("username", "<username goes here>");
editor.putInt("score", <the score goes here>);
editor.commit();   // Do not forget this to actually store the values

如果您希望稍后阅读这些值:

String gameUsername = sp.getString("username", "default");
int gameScore = sp.getInt("score", 0);

“username”和“score”是其尊重值的关键。

SharedPreferences是存储值时想到的最简单的方法。 希望能帮助到你。 〜干杯。