Android 首选项:当用户未使用首选项屏幕时如何加载默认值?

2023-12-07

我正在使用 PreferenceActivity 让用户设置一些值。 我正在向它提供具有定义的首选项的 xml 文件。

我已经设置了所有android:defaultValue=""对于他们来说。

当我启动应用程序时,我需要首选项,或者如果尚未手动设置它们,我需要默认值:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean value = prefs.getBoolean("key"), false); 

然而,当android:defaultValue="true"我仍然得到false。因此,看起来 XML 中设置的 defaultValues 没有在任何地方使用,除了在初始化首选项屏幕时之外。

我不想对默认值进行硬编码getBoolean()方法。那么,有没有办法只在一个地方定义这些默认值呢?


这个问题和我的很相似:

从主活动中的 xml 初始化首选项

只需使用此代码onCreate method:

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

它将从 XML 加载您的首选项和最后一个参数 (readAgain)将保证用户首选项不会被覆盖。这意味着设置readAgain论证false意味着如果过去从未调用过此方法,则只会设置默认值,因此您无需担心每次创建 Activity 时都会覆盖用户的设置

看看PreferenceManager.setDefaultValues在 Android API 中进行进一步调查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 首选项:当用户未使用首选项屏幕时如何加载默认值? 的相关文章

随机推荐

  • 来自另一个类库的基本控制器在 Web api 中不起作用

    我有两个 Web API 项目 还有一个MarketController我需要扩展 Api 控制器 所以我做到了 我创建了一个BaseController类并继承自ApiController像这样 public class BaseCont
  • 计算数百 GB 数据中的子序列

    我正在尝试处理一个非常大的文件并计算文件中特定长度的所有序列的频率 为了说明我正在做的事情 请考虑一个包含序列的小输入文件abcdefabcgbacbdebdbbcaebfebfebfeb 下面 代码读取整个文件 并获取长度为 n 的第一个
  • 如何在 AngularJS 中检索之前的 URL

    我知道我可以使用获取当前 URL location search and location path 但我需要一种方法来获取上一个 我可以使用全局变量或类似的变量吗 Angular rootScope将拥有所有应用程序组件的所有信息 下面在
  • 将儒略日转换为日/月/年

    我的帖子显然不清楚 所以我正在努力修复它 如果我仍然不清楚 请随时告诉我 我得到了一个物理变量的数据框 每分钟都有一个数据 我想将前 4 列转换为单个列 R 中的 d m Y H M GMT Year Julian day Hour Min
  • 如果 Visual Studio 2012 / 2013 中的项目/解决方案中缺少文件,则报告错误/警告

    视觉工作室不再支持宏 因此以下问题中的答案仅对以前的版本有效 如果 Visual Studio 中的项目 解决方案中缺少文件 则报告错误 警告 当您构建缺少文件的解决方案时 Visual Studio 2012 2013 是否可以报告错误
  • 在目标包含源的情况下使用 strncpy()

    我用 C 编写了一个函数来修剪字符串中的空白字符 我关心的是最后一行trim 下面的函数 其中源包含在目标中 测试用例以及其他一些测试结果都很好 复制源和目标位于同一内存中的字符串的全部或部分会导致奇怪的问题吗 源代码 include
  • ORM 学说中的 Substring_index 函数

    我必须使用SUBSTRING INDEXsymfony 2 中的学说 ORM 函数 我该怎么做 现在在查询中使用它会出现未定义的函数错误 Syntax Error line 0 col 299 Error Expected known fu
  • Django:模板中的嵌套变量

    在我的 django 登录模板之一中 有一行
  • 将 ImageData 对象(不是画布)转换为图像 dataURL

    我想从 ImageData 对象 即宽度 高度 数据 创建 dataURL 我意识到画布有这个 但我想避免扭曲画布使用 主要是alpha预乘 即我想避免明显的canvas putImageData步骤 From 这个帖子我可以将任何 arr
  • TensorFlow 图内复制示例

    我想在具有多个 ps 和工作线程的多 GPU 集群中试验 TensorFlow 的图内复制 这CIFAR 10 多 GPU 示例图中显示了单台机器上的同步复制 有没有可用的示例可供我参考 例如图间训练的示例训练程序 一般来说 对于分布式训练
  • 如何在 WSO2 Micro Integrator 中跳过 CSV 文件中的标题

    我正在使用 smooks mediator 使用 VFS 将 csv 文件转换为 json 我们可以选择在使用 CSV 连接器 模块时跳过标题行 使用 smooks 在 WSO2 Integration studio 中处理文件时如何跳过第
  • 如何获取每个外键的最小日期记录的记录 ID?

    我有下表 recordID createdDate ForeignKeyID 00QA000000PtFXaMAN 2012 01 03 13 23 36 000 001A000000ngM21IAE 00QA000000OS2QiMAL
  • REST Web api URL GET 使用字符串而不是 id 未按预期路由

    我有以下示例 其中请求是http domain api foo username 但我收到了 404 状态代码 此控制器上不存在其他 Get 操作 这不应该起作用吗 public class FooController ApiControl
  • 使用 Swift 进行水平滚动

    我怎样才能找到教程或其他东西来帮助我创建这样的东西可滚动的下图中使用 Swift 标记的区域 谢谢 None
  • 如何使用vbs或批处理脚本在特定时间关闭电脑

    我想要一个脚本放在启动文件夹中并且不使用任务计划程序 If time gt 22 00 hrs shutdown if startup after 10pm Shutdown s f break While time 22 00hrs lo
  • 使用 JavaFx Scene Builder 2.0 “全屏”同时显示两个窗口

    我正在开发一个迷你应用程序 我需要在全屏上同时向用户显示 2 个窗口 该应用程序将为双屏用户制作 我正在 NetBeans 8 0 1 上使用 JavaFx Scene Builder 2 0 我尝试了这个 但只有第二个窗口显示在全屏上 p
  • 当另一个表中值为 null 时重定向到页面 laravel

    如果我的additional infos 表包含一些在本例中为空的内容 联系人 姓名和地址 我会尝试将用户重定向到另一个页面 我现在已经做了类似的事情 但即使联系人 姓名和地址已填写 它仍然将我重定向到另一个页面 有人能帮我吗 提前致谢 p
  • 在 R 循环中命名文件

    我有多个音频文件 它们保存在我的工作目录中的几个子文件夹中 我有一个循环 它读取每个文件的第一分钟 然后将它们保存为新文件 library tuneR dir create New files FILES lt list files PAT
  • 在循环中调用 utl_file.put 时 UTL_FILE.WRITE_ERROR

    我的 PL SQL 过程中有以下代码 我在 API XXX put 中调用了它 它调用utl file put 在 while 循环中 l xmldoc 是来自 getReportXML 函数的 CLOB 该函数返回 xml clob 我编
  • Android 首选项:当用户未使用首选项屏幕时如何加载默认值?

    我正在使用 PreferenceActivity 让用户设置一些值 我正在向它提供具有定义的首选项的 xml 文件 我已经设置了所有android defaultValue 对于他们来说 当我启动应用程序时 我需要首选项 或者如果尚未手动设