我有一个基本测验,我可以使用下面的第二个屏幕(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等变量中,并在每次完成测验时添加。
我是否需要在此处使用更多共享首选项,将运行值存储在第一个屏幕中,将其放在第二个屏幕上并将其发送回第一个添加的屏幕?感觉我现在太混淆了这个问题。任何帮助表示赞赏
干杯
答案 0 :(得分:1)
如果我理解你的问题是你的数据即测验值,并且每次以共享偏好更新它们。因此,您所做的是使用共享首选项获取最后一个数据,然后添加到新值,即分数或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();
答案 1 :(得分:0)
您的xp
变量不是全局变量,因此您必须手动跟踪并更新其值。你有几个选择:
创建一个存储xp的类。传递它。坚持摧毁等。
xp
,在应用程序运行时进行修改,并在切换屏幕之前将其保留