无法在Android中使用SharedPreferences增加计数器

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上冲浪了很多,但似乎并没有遇到我需要的样式。任何帮助将是高度赞赏的家伙。提前致谢。

Yas*_*mar 5

++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)