我的问题如下:我有一个扩展DialogPreference的组件。如果我从UI外部更改关联的首选项...
SharedPreferences.Editor ed= sharedPreferences.Edit();
ed.putInteger("Setting",aValue);
ed.commit();
...然后,当我打开对话框时,所选的首选项没有改变。即使修改了共享首选项值,它仍然包含先前设置的值。
有没有人知道造成这种情况的原因是什么?
答案 0 :(得分:0)
很久以前这可能已经解决了,但以防万一......
可能导致问题的一些想法:
' SharedPreferences'你写的价值可能和你读的不一样。您可以通过从SharedPreferences中获取值并在对话框上调用commit()之后打印它(On Log或通过Toast)来测试它。如果你看到修改后的变量,你实际上可能正在打开一个新的共享参考'在对话框上,而不是您在调用活动中使用的那个,或
您可能在对话后再次重写默认值。例如,在关闭对话框后立即调用IF onResume()或其他函数,如果在那里写入默认值。我认为这不太可能,但如果您确定自己写的是正确的“共享预算”,那么可能还需要考虑其他事项。
编写变量时使用的函数可能是错误的....我不清楚编译器如何检测不到这一点,否则不会失败,但正如我在文档中看到的那样SharedPreferences.Editor,写入Integer值的函数可以是putInt(String key,int value)而不是putInteger(String key,int value)。
您可能正在读取或写入错误的变量....如果您复制粘贴putInt命令并留下错误的键或错误的值,则可能会发生这种情况。这是一种长期未被发现的错误,但它......我猜它会发生。类似效果的错误就是键上有一个拼写错误(两个不同的读写键)。
如果没有真正的代码,我认为我可以提出更多建议...但我希望这可以帮助任何人解决这个问题。
问候。