Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SharedReferences不递增整数值-Android_Java_Android_Sharedpreferences - Fatal编程技术网

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()
以防某个值不存在时,它也是默认值。请在开始文章中查看我的编辑。在您建议的编辑之后,仍然存在不正确的输出。请在开篇文章中查看我的编辑。在您建议的编辑之后,仍然存在不正确的输出。请在开篇文章中查看我的编辑。在您建议的编辑之后,仍然存在不正确的输出。请在开篇文章中查看我的编辑。在您建议的编辑之后,仍然存在不正确的输出。