gpt4 book ai didi

android - 是否需要调用 PreferenceManager.setDefaultValues() 来清除首选项?

转载 作者:行者123 更新时间:2023-11-29 21:42:34 26 4
gpt4 key购买 nike

到目前为止,我的应用程序的 PreferenceActivity 中的“重置为默认值”按钮执行如下操作:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();

一切正常,但最近我看到了 setDefaultValues PreferenceManager 类中的方法。函数末尾的注释说我应该在清除首选项以将它们设置回默认值后调用此函数。所以我想知道为什么文档告诉我调用这个方法,如果一切都在没有调用它的情况下工作正常?

这在逻辑上似乎也没有必要。如果您清除首选项,它将执行与您的应用程序首次运行时相同的操作。它将使用首选项中的 defaultValue 属性来填充所有值。所以调用这个额外的方法似乎是多余的。

那么有必要吗?

最佳答案

一般来说,这个额外的调用是必要的,但在你的特定情况下,它基本上是多余的。

我可能是错的,但是您使用 editor.clear() 的编辑器方法将所有首选项设置为 null,而不是它们的默认值。直到用户膨胀 PreferenceActivity 才会读取 preferences.xml 并设置默认值。

基本上,调用 SetDefaultValues() 所做的是将首选项设置为默认值仅当首选项设置为 null 时。假设您有一个名为“Age”的首选项,它在您的 xml 中默认设置为“21”。假设用户从未扩充过 pref 菜单,根据您查询首选项的方式,它可能会给您一个空响应。这就是为什么以 prefs.getString("prefkey", "defaultvalue"); 形式查询是一种很好的做法。在查询之前进行此调用(并传入 true)会将“Age”设置为默认值“21”。注意:一旦用户设置了首选项或扩充了菜单,此调用将无效。

但是,由于您正在调用 editor.clear() 您的首选项 Activity ,首选项会自动使用 preferences.xml 中的默认值重新填充,因此没有必要打电话。但是,如果您从其他一些 Activity 中调用电话,则需要这样做,否则您的所有首选项都将为空。为了完整起见,我建议您添加调用就像腰带和吊带一样,这样,如果您决定将您的功能移出此 Activity ,您就不会想知道为什么所有首选项都是空的。在性能方面,它不应该有任何影响。

此外,不相关,但您可以通过将示例中的最后 3 行替换为 preferences.edit().clear().commit();

关于android - 是否需要调用 PreferenceManager.setDefaultValues() 来清除首选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16705017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com