【问题标题】:Android SharedPreferences: How to define keys at runtime?Android SharedPreferences:如何在运行时定义键?
【发布时间】:2018-07-30 16:23:25
【问题描述】:

Android 文档描述了如何使用PreferenceActivityPreferenceFragment 创建“首选项”UI。首选项本身在 XML 文件(例如 preferences.xml)中定义,其中包含除其他外用于将每个首选项存储在应用程序的 SharedPreferences 中的“密钥”(android:key)。

这对于具有单一偏好设置的应用非常有用。但是,我们假设有一个应用程序可以有多个“项目”(例如:视频聊天应用程序中的多个帐户),并且需要为每个帐户显示一个首选项屏幕。

如何做到这一点?是否可以在运行时指定密钥(例如,可以为每个帐户使用不同的前缀)?有没有更好的方法来解决这个问题?

【问题讨论】:

标签: android sharedpreferences android-preferences


【解决方案1】:

是的,有可能! 您可以在运行时分配键,但正如您在 cmets 中所说,您需要更改 Xml 中预定义首选项的键,而不是显式创建新首选项,这是一种方法 -

Preference pref = findPreference("my_pref");
String myPrefix = "prefix_";
pref.setKey(myPrefix + pref.getKey());

【讨论】:

  • 当首选项没有被显式创建,而是通过addPreferencesFromResource 创建时,如何做到这一点?另外,如何为片段/活动中的 all 首选项执行此操作(添加前缀),而不必逐个检查?
  • @Grodriguez 你必须得到每个首选项'然后添加一个前缀 - pref.setKey(myPrefix + pref.getKey());其中 myPrifix 是一个字符串
  • “获取每个偏好”,如何?你能举个例子吗?
  • @Grodriguez 更新了答案:)
  • 嗯,好的,但必须有更好的方法,而不是按名称检索每个首选项..
猜你喜欢
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 2019-06-05
  • 2018-10-23
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 2011-02-15
相关资源
最近更新 更多