我只是 Android 的新手,我有一个场景,用户可以使用相机拍照并将照片存储在 SDCard 中。我需要用动态名称保存照片,即我希望图像名称为图像 1、图像 2 等等。我最初将计数器值设置为 1,因此第一张图像将存储为图像 1,下次计数器将增加该值并再次存储。
问题:
我的问题是我无法在每次关闭并重新打开应用程序时增加计数器值。我已经尝试了很多,它再次将计数器设置回 1。
代码:
int count;
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
int defaultValue = getPreferences(MODE_PRIVATE).getInt("count_key",count);
defaultValue = count;
editor.putInt("count_value",defaultValue).commit();
if(count == 1)
{
count = 1;
getPreferences(MODE_PRIVATE).edit().putInt("count_key",count).commit();
}
else
{
++count;
getPreferences(MODE_PRIVATE).edit().putInt("count_key",count).commit();
count = getPreferences(MODE_PRIVATE).getInt("count_key",count);
System.out.println("The count value is " + count);
}
在执行时,它每次都将计数值返回为 1,并且似乎没有增加计数值。我第一次打开它应该是 1,然后是 2,依此类推。我的逻辑有问题还是 SharedPrefs 出了问题。我在 StackOverFlow 上冲浪了很多,但似乎没有遇到我需要的风格。任何帮助将不胜感激。提前致谢。
最佳答案
++count;
将它放在 if 循环之前,而不是在 else 循环中。或使用以下代码增加计数
int count = 0;
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
int defaultValue = getPreferences(MODE_PRIVATE).getInt("count_key",count);
++defaultValue;
getPreferences(MODE_PRIVATE).edit().putInt("count_key",defaultValue).commit();
count = getPreferences(MODE_PRIVATE).getInt("count_key",count);
System.out.println("The count value is " + count);
关于android - 无法在 Android 中使用 SharedPreferences 增加计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20812201/