0

是的,我知道这里有很多这类问题,但我还没有找到一个有效的问题。

在过去的 30 分钟左右,我一直在玩 SharedPreferences,到目前为止,这些值完全没有问题保存,但是当您通过长按后退按钮或使用任务管理器终止进程并重新启动应用程序时,它会回到默认值。

现在默认值为 50,因为我正在做均衡器并有一个平坦/重置按钮

所以,是的,基本上我如何保存这些值并保存它们?!

这是我的各种尝试:

尝试1:

     private int isFirstTime()
{
    SharedPreferences sp = getSharedPreferences("sliders", MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    for (int i = 0; i < num_sliders && i < MAX_SLIDERS; i++) {
        editor.putInt("sliders",  sliders[i].getProgress());
        editor.putInt("bass_boost", bass_boost.getProgress());
        editor.commit();
    }
    return num_sliders;


}

尝试2:

  public int saveProgress(){
SharedPreferences sp = getSharedPreferences("sliders2", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("sliders",  sliders[0].getProgress());
editor.putInt("sliders2", sliders[1].getProgress());
editor.putInt("sliders3", sliders[2].getProgress());
editor.putInt("sliders4", sliders[3].getProgress());
editor.putInt("sliders5", sliders[4].getProgress());
editor.putInt("sliders6", sliders[5].getProgress());
editor.putInt("sliders7", sliders[6].getProgress());
editor.putInt("sliders8", sliders[7].getProgress());
editor.putInt("sliders9", sliders[8].getProgress());
editor.putInt("sliders10", sliders[9].getProgress());
editor.putInt("bass_boost", bass_boost.getProgress());
editor.commit();
return min_level - max_level;
}

尝试 3:

  public int getProgress(){

 SharedPreferences sp = getSharedPreferences("sliders", MODE_PRIVATE);
 for (int i = 0; i < num_sliders && i < MAX_SLIDERS; i++) {
     num_sliders = sp.getInt("sliders", 0);
 }
 num_sliders = sp.getInt("bass_boost", 0);
 return num_sliders;
 }

尝试4:

   public int getProgress2(){

    SharedPreferences sp = getSharedPreferences("sliders",   Activity.MODE_PRIVATE);
     num_sliders = sp.getInt("sliders1", -1);
     num_sliders = sp.getInt("sliders2", -1);
     num_sliders = sp.getInt("sliders3", -1);
     num_sliders = sp.getInt("sliders4", -1);
     num_sliders = sp.getInt("sliders5", -1);
     num_sliders = sp.getInt("sliders6", -1);
     num_sliders = sp.getInt("sliders7", -1);
     num_sliders = sp.getInt("sliders8", -1);
     num_sliders = sp.getInt("sliders9", -1);
     num_sliders = sp.getInt("sliders10", -1);
     num_sliders = sp.getInt("bass_boost", -1);
     return num_sliders;
}

任何帮助将不胜感激,因为我需要推出应用程序更新!

谢谢你。

4

2 回答 2

1

我知道这是一个老问题,但我只是浪费了两个小时,如果有人遇到同样的问题,不妨给出我的答案。

为了使设置在应用程序终止/设备重新启动后正常存活,我必须做的是:

  1. 使用编辑器删除旧值
  2. 犯罪
  3. 输入新值
  4. 犯罪

因此,例如:

SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.remove(Constants.PREF_STARTED_EXPERIMENTS);
        editor.commit();

        editor.putStringSet(Constants.PREF_STARTED_EXPERIMENTS, experiments);
        editor.commit();

希望它可以节省一些时间。

于 2015-06-03T09:33:27.110 回答
0

问题可能是空值被保存到您的首选项文件中。请尝试此答案是否解决了您的问题。

于 2014-04-28T14:24:00.497 回答