Java SharedReferences不递增整数值-Android
我想在Java SharedReferences不递增整数值-Android,java,android,sharedpreferences,Java,Android,Sharedpreferences,我想在SharedReferences中存储一个int。int表示用户在我的游戏中处于哪个级别。游戏开始前,执行以下代码: int level; // Restore preferences SharedPreferences settings = getSharedPreferences("level_SP", 0); level = settings.getInt("currentLevel", 0); if(level == 0) {
SharedReferences
中存储一个int。int表示用户在我的游戏中处于哪个级别。游戏开始前,执行以下代码:
int level;
// Restore preferences
SharedPreferences settings = getSharedPreferences("level_SP", 0);
level = settings.getInt("currentLevel", 0);
if(level == 0) {
level++;
}
String str = Integer.toString(level);
title.setText(str);
从title.setText(str)输出的文本代码>是1
出于测试目的,无论用户在游戏中如何操作,他都会通过关卡。游戏结束后,执行此代码
public void levels() {
// do calculations here to see if user passed level.
// Restore preferences
SharedPreferences settings = getSharedPreferences("level_SP", 0);
int level = settings.getInt("currentLevel", 0);
int newLevel = level++;
// We need an Editor object to make preference changes.
SharedPreferences.Editor editor = settings.edit();
editor.putInt("currentLevel", newLevel);
// Commit the edits!
editor.commit();
}
然后当用户再次开始游戏时,他们应该处于2级。在粘贴在这篇文章顶部的代码中,这行代码:title.setText(str)
应该输出2
,但它仍然在说1
。这告诉我,我存储在SharedReferences
中的int不是递增的
我的问题是,我是否正确地“获取”了SharedReferences
?如果是,我是否正确“编辑”了SharedReferences
?如果两个都没有,我做错了什么
编辑
思考:散布在我上面代码中的0
有什么意义吗?它们应该是别的吗?使用
editor.putInt("currentLevel", newLevel);
相反
当你获得新的等级时,你将它写入与阅读时不同的偏好。使用
editor.putInt("currentLevel", newLevel);
相反
当您获得新的级别时,您正在将其写入与阅读时不同的首选项。看起来您想要更改此设置
editor.putInt("newLevel", newLevel);
到
您正在创建一个新的SharedReference
,而不是编辑现有的currentLevel
以使currentLevel
永远不会从1更改,看起来您想更改它
editor.putInt("newLevel", newLevel);
到
您正在创建一个新的SharedReference
,而不是编辑现有的currentLevel
以使currentLevel
从不从1更改这一行是问题:
int newLevel = level++;
您正在使用后增量运算符,这意味着这与:
int newLevel = level;
level = level + 1;
试一试
这条线就是问题所在:
int newLevel = level++;
您正在使用后增量运算符,这意味着这与:
int newLevel = level;
level = level + 1;
试一试
editor.putInt(“currentLevel”,newLevel)代码>也许?0的意思肯定是。如果值不存在,则使用getInt()
时,它也是默认值editor.putin(“currentLevel”,newLevel)代码>也许?0的意思肯定是。当您使用getInt()
以防某个值不存在时,它也是默认值。请在开始文章中查看我的编辑。在您建议的编辑之后,仍然存在不正确的输出。请在开篇文章中查看我的编辑。在您建议的编辑之后,仍然存在不正确的输出。请在开篇文章中查看我的编辑。在您建议的编辑之后,仍然存在不正确的输出。请在开篇文章中查看我的编辑。在您建议的编辑之后,仍然存在不正确的输出。