0

我的游戏中有 4 个益智游戏,可以说是子游戏。为每个用户赚取一些积分。game1 结束后,我将获得的积分设置为公共静态 int pointsGame1 变量。以此类推其他游戏。在我的主菜单中,我有一个应该显示总分的框。我做这样的事情:

boxTotalPoints.setText("" + pointsGame1 + pointsGame2 + pointsGame3 + pointsGame4);

问题是当我开始该活动时,我得到 0000,因为所有变量的起始值都是 0。

我遇到的第二个问题是,当我完成游戏1 时,我将这些点添加到我的 totalPoints 变量中,也是 public static int,如下所示:

Menu.totalPoints =+ pointsGame1;

但是当我玩第二场比赛时,它应该汇总我所有的积分并将其显示在 mu 总框中,但我只从最后一场比赛中获得积分。此外,如果我在第一场比赛中获得 60 分,它将显示 00060。

如何解决这两件事?

4

1 回答 1

2

SharedPreferences在您的活动中使用。

准确地说:使用来自不同活动/服务/意图/...的共享首选项,您应该将其与模式 MODE_MULTI_PROCESS 一起使用(常量值 int = 4)。如果没有,文件将被锁定,并且只有一个进程可以一次写入!

SharedPreferences preferences = getSharedPreferences("myapp",4);
SharedPreferences.Editor editor = preferences.edit();
int points= pointsGame1 + pointsGame2 + pointsGame3 + pointsGame4;
editor.putInteger("points", points);
editor.commit();

SharedPreferences preferences = getSharedPreferences("myapp",4);
points= preferences.getInteger("points", 0);
points= point+pointsGame1;
SharedPreferences.Editor editor = preferences.edit();
editor.putInteger("points", points);
editor.commit();

并且任何时候您需要跨活动保留点,请使用上面的代码。


然后,当您需要从任何活动/流程中检索积分时:

SharedPreferences preferences = getSharedPreferences("myapp", 4);
points= preferences.getInteger("points", 0);
于 2013-04-06T20:58:22.093 回答