Java 为什么';应用程序重新启动时,该值是否保存到SharedReferences中?

Java 为什么';应用程序重新启动时,该值是否保存到SharedReferences中?,java,android,Java,Android,我有一个名为cup的函数,我想知道为什么这段代码没有保存I的值。为什么当我关闭应用程序时,它会将i返回到0 public void cup(View view) { SharedPreferences sharedPreferences = getSharedPreferences("Water", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); i=

我有一个名为cup的函数,我想知道为什么这段代码没有保存
I
的值。为什么当我关闭应用程序时,它会将
i
返回到
0

public void cup(View view) {

    SharedPreferences sharedPreferences = getSharedPreferences("Water", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();

    i=sharedPreferences.getInt("Cup", 0);

    final int[] imageArray = {
       R.drawable.waterdrop1, R.drawable.waterdrop2, R.drawable.waterdrop3,          
       R.drawable.waterdrop4, R.drawable.waterdrop5, R.drawable.waterdrop6, 
       R.drawable.waterdrop
    };

    imageView7.setImageResource(imageArray[i]);

    i++;
    if (i > 6) {
        i = 6;
    }
    editor.putInt("Cup", i);
    editor.commit();      
}

知道cup是onclick函数后,您的代码对于
SharedReferences
部分看起来是正确的。我相信您的代码中可能有另一部分未显示,这可能是导致问题的原因


话虽如此,我建议使用
editor.apply()
而不是
.commit()
在后台处理写操作。

您的代码对于
共享引用部分看起来是正确的。我相信您的代码中可能有另一部分未显示,这可能是导致问题的原因


也就是说,我建议使用
editor.apply()
而不是
.commit()
在后台处理写入操作。

您的
I
输出是什么?预期输出是什么?当我们单击图像时,我必须增加1,它的最大值是6我注意到
i
不是局部变量。是否还有其他东西可以交互(修改)
i
?“当我关闭应用程序时,将
i
返回到
0
是什么意思?”?我假设在应用程序重启后第一次调用
cup()
I
0
?您可以改为执行
editor.apply()
,但如果这是唯一修改Water SharedReferences的代码,并且应用程序在退出时未清除其内存,那么该值为什么会重置是没有意义的。我尝试将变量更改为本地变量,结果成功了,非常感谢!!您的
i
输出是什么?预期输出是什么?当我们单击图像时,i必须增加1,它的最大值是6。我注意到
i
不是局部变量。是否还有其他东西可以交互(修改)
i
?“当我关闭应用程序时,将
i
返回到
0
是什么意思?”?我假设在应用程序重启后第一次调用
cup()
I
0
?您可以改为执行
editor.apply()
,但如果这是唯一修改Water SharedReferences的代码,并且应用程序在退出时未清除其内存,那么该值为什么会重置是没有意义的。我尝试将变量更改为本地变量,结果成功了,非常感谢!!谢谢,但我已经尝试了编辑器.apply(),但问题仍然存在。正如我所说,问题在代码的其他地方。
.apply()
只是一个建议,不是解决问题的方法。谢谢,但我已经尝试了编辑器。apply()但问题仍然存在。正如我所说,问题在代码中的其他地方。
.apply()
只是一个建议,而不是解决问题的方法。