我有一个基本的测验,可以从第二屏(QuizActivity)使用以下方法获得每次尝试的得分:

    SharedPreferences preferences =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = preferences.edit();

    editor.putInt("myHighScore", mScore);
    editor.commit();

    SharedPreferences preferences2 =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor2 = preferences2.edit();

    editor2.putInt("myXP", xp);
    editor2.commit();


然后,我可以使用以下方法在第一个屏幕(MainActivity)中获取这些值:

    SharedPreferences preferences =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int highScore = preferences.getInt("myHighScore", 0);

    SharedPreferences preferences2 =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int xp = preferences2.getInt("myXP",0 );


但是,xp每次都会重置为最后一个值-我需要做的是,将所有分数的总运行值存储在xp之类的变量中,并在每次测验完成时将其添加到变量中。

我是否需要在此处使用更多共享的首选项,将运行值存储在第一个屏幕中,在第二个屏幕上获取它,然后将其发送回加起来的第一个屏幕?感觉我现在对这个问题太困惑了。任何帮助表示赞赏

干杯

最佳答案

如果我了解您的问题,那么您输入的数据即为测验值,并且每次都以共享首选项进行更新。因此,您要做的是使用共享的首选项获取最新数据,然后将其添加到新值,即得分或xp。然后使用方法apply将其保存在共享首选项中。

SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int highScore =highScore +preferences.getInt("myHighScore", 0);

    SharedPreferences preferences2 =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int xp =xp+ preferences2.getInt("myXP",0 );

SharedPreferences preferences =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = preferences.edit();

    editor.putInt("myHighScore", mScore);
    editor.apply();

    SharedPreferences preferences2 =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor2 = preferences2.edit();

    editor2.putInt("myXP", xp);
    editor2.apply();

关于java - Android Studio-保存所有已玩游戏的累积分数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50170544/

10-13 01:11