gpt4 book ai didi

android - 来自多个文件的 SharedPreferences

转载 作者:行者123 更新时间:2023-11-29 22:29:24 25 4
gpt4 key购买 nike

我有 2 个文件用于 SharedPreferences(一个显示在 PreferenceActivity 中,第二个存储不能在 PreferenceActivity 中看到的值>).问题 - 我想在启动时从两个文件加载这些值。

  1. 我尝试了 getSharedPreferences() 并传递了文件名。奇怪的是,我无法读取真实值 - 它总是返回默认值。

  2. 如果我使用 addPreferencesFromResource() 并传递资源文件 ID,它会读取值,但我不能使用这种方法,因为我的 Activity 必须是子类PreferenceActivity,我不想这样做。

如何从多个首选项文件中读取值?必须在 getSharedPreferences() 中传递什么作为第一个参数(带扩展名的文件名、不带扩展名的文件名等)?

有一个方法PreferenceManager.getDefaultSharedPreferences()。当我有超过 1 个文件时,什么是“默认”?

如此简单的任务,却浪费了如此多的时间......

最佳答案

简短回答:听起来您在某个时候调用了 PreferenceManager.getGlobalPreferences,这会加载默认首选项文件而不是您的“命名”首选项。如果您将其与 context.getSharedPreferences("PREFS_NAME", Context.MODE_WORLD_READABLE) 混合使用,您将获得奇怪的行为。

长答案:您必须指定每次打开时要读取的首选项文件的名称:

SharedPreferences prefs = context.getSharedPreferences("PREFS_NAME", Context.MODE_WORLD_READABLE)

这将强制应用程序创建一个名为“PREFS_NAME.xml”的新首选项文件(如果它不存在)并开始使用它。

addPreferencesFromFile() 是一个不同的函数,它仅用于填充 PreferenceActivity。如果您不想使用 PreferenceActivity,那么它对您毫无用处。

如果您确实决定为您的设置使用首选项 Activity ,请使用上面的内容,然后使用以下命令设置此首选项 Activity 实例的首选项

getPreferenceManager().setSharedPreferencesName("PREF_NAME);

然后调用 addPreferencesFromResource()。如果您不使用 PreferenceActivity,则 addPreferencesFromResource() 不会为您做任何事情。

关于android - 来自多个文件的 SharedPreferences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770783/

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