是的,我知道这里有很多这样的问题,但我还没有找到一个有效的。
在过去的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;
}任何帮助将非常感谢,因为我需要得到的应用程序更新推出!
谢谢。
发布于 2015-06-03 17:33:27
我知道这是一个古老的问题,但我只是在这个问题上浪费了两个小时,如果有人遇到同样的问题,不妨给出我的答案。
为了让设置在应用程序终止/设备重启过程中正常运行,我必须做的是:
使用编辑器删除新value
中的旧value
所以,举个例子:
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(Constants.PREF_STARTED_EXPERIMENTS);
editor.commit();
editor.putStringSet(Constants.PREF_STARTED_EXPERIMENTS, experiments);
editor.commit();希望这能节省一些人的时间。
发布于 2014-04-28 22:24:00
问题可能是将空值保存到您的首选项文件中。如果this answer解决了您的问题,请尝试。
https://stackoverflow.com/questions/23343235
复制相似问题