我有一个基本的测验,可以从第二屏(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/