【问题标题】:Default value not reflecting-shared preferences默认值不反映共享偏好
【发布时间】:2012-07-23 12:57:09
【问题描述】:

我有一个扩展 PreferenceActivity 的设置类。我在相应的preferences.xml 中有一个复选框首选项。默认值为假。但是,我在运行期间将其设置为 true,并且每当应用程序启动时,该值都设置为 true。我需要它采用每次应用程序启动时为 false 的默认值。这不应该是默认行为吗?

【问题讨论】:

  • 如果你硬卸载应用程序,然后重新安装它,是不是假的?如果是这样,这是预期的行为。更改首选项应保存其值以供以后启动;仅在先前未设置时才使用默认值。
  • 是的,我卸载了它并尝试了。这是假的。我懂了。谢谢!

标签: android checkbox default sharedpreferences


【解决方案1】:

根据 OP 上的 cmets

PreferencesActivity 将每个项目保存在首选项中,以供以后在应用程序中使用。这些值在退出后也会保留。 “默认”值仅在之前未设置首选项时显示,这意味着您的值将仅为false,直到有人将其设置为true。他们稍后可以将其改回false,但它永远不会再次使用默认值。

要重置为默认值,必须卸载并重新安装应用程序(或通过应用程序管理器清除其数据)。

【讨论】:

  • 我的 PreferenceActivity 中有一个首选项。单击此首选项后,我将启动 ListActivty 以获取结果。这个选定的 ListItem(以及它需要什么值?显示文本?)会自动写入 SharedPreferences 吗?
  • 当您设置Preference 时,您使用了XML 并给了它一个android:key 值,不是吗?那应该是它保存的关键。是的,它应该自动保存。
  • 这就是我的想法,但是当我尝试访问该值时在 onCreate 中: mCurrentTrack = mSharedPreferences.getString("MusicTrack", null);我总是在 mCurrentTrack 中得到一个空值。你认为这是为什么?该值似乎不会持续存在。
  • 没有看到 XML 和其他首选项详细信息,这是不可能的。您能否使用偏好 XML、偏好代码和您的 ListActivity 的详细信息打开一个新问题?
  • 好的。请在此处查看:stackoverflow.com/questions/12257151/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多