San*_*San 1 android counter sharedpreferences
我只是在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);
}
Run Code Online (Sandbox Code Playgroud)
在执行时,它每次都将计数值返回为1,并且似乎并不增加计数值。我第一次打开它应该是1,然后是2,依此类推。我的逻辑是否有问题,或者SharedPrefs出了问题。我在StackOverFlow上冲浪了很多,但似乎并没有遇到我需要的样式。任何帮助将是高度赞赏的家伙。提前致谢。
++count;
Run Code Online (Sandbox Code Playgroud)
将此放在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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2990 次 |
| 最近记录: |