Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将首选项附加到特定的SharedReferences?_Android_Persistence_Sharedpreferences_Preference - Fatal编程技术网

Android 如何将首选项附加到特定的SharedReferences?

Android 如何将首选项附加到特定的SharedReferences?,android,persistence,sharedpreferences,preference,Android,Persistence,Sharedpreferences,Preference,我正在为我们的应用程序实现首选项。我知道如何显示首选项UI以及如何使用SharedReferences读取/写入值。在我们的应用程序中,我需要处理两组首选项,我想问一下这个问题,尤其是Android文档中的一条评论 在返回值部分下有以下注释: 返回此首选项读取其值的SharedReferences,如果未附加到首选项层次结构,则返回null 我想问一下,如何将共享引用附加到特定的首选项,无论是编辑文本首选项还是其他。换句话说,首选项中的持久化代码如何知道它应该将用户输入存储在一个特定的共享引用对

我正在为我们的应用程序实现首选项。我知道如何显示首选项UI以及如何使用
SharedReferences
读取/写入值。在我们的应用程序中,我需要处理两组首选项,我想问一下这个问题,尤其是Android文档中的一条评论

返回值
部分下有以下注释:

返回此首选项读取其值的SharedReferences,如果未附加到首选项层次结构,则返回null

我想问一下,如何将
共享引用
附加到特定的
首选项
,无论是
编辑文本首选项
还是其他。换句话说,
首选项
中的持久化代码如何知道它应该将用户输入存储在一个特定的
共享引用
对象中,而不是存储在另一个对象中

为了用一个例子进一步解释我的问题,假设我有以下几点:

SharedPreferences prefs1 = getSharedPreferences(file1, mode);
SharedPreferences prefs2 = getSharedPreferences(file2, mode);
我的问题是应该使用什么API,以便
首选项
对象的持久化代码使用
prefs1
,而不是
prefs2

目标是运行2.3.4的NexusOne

也许答案是显而易见的,但我在阅读文档和搜索网络后找不到它。提前感谢您的帮助

换句话说,首选项中的持久性代码如何知道它应该将用户输入存储在一个特定的SharedReferences对象中而不是另一个

Preference
使用
PreferenceManager
getSharedReferences()
,最终路由到
getDefaultSharedReferences()

欢迎您创建自己的
首选项
子类来更改此行为,但由于首选项屏幕系统可能未设计为处理多个
共享引用
对象,因此您的首选项更改可能无法持久化

瞧,我鼓励你重新考虑:

在我们的应用程序中,我需要处理两组首选项


感谢您抽出时间回复。也许我弄错了,但是如果
首选项
最终使用了
getDefaultSharedReferences()
,那么这意味着它无法不附加到首选项层次结构(即返回
null
),因为总是有一个可以检索的默认层次结构。至于两组偏好,我指的是两组不同的设置。例如3D游戏:一套可以是“3D设置”(或引擎设置)。另一种是“游戏设置”(或应用程序设置)。对我来说,这两个都可以在应用程序中访问听起来并不奇怪。@alokoko:我认为这里的“首选项层次结构”指的是首选项组中的一组初始化首选项对象,它们共同连接到首选项管理器。偏好!=SharedReference@alokoko:“一个例子是3D游戏:一套可以是“3D设置”(或引擎设置)。另一套可以是“游戏设置”(或应用程序设置)——这不是两套设置。它们是一组设置,您可能希望通过
PreferenceFragment
PreferenceCategory
和/或嵌套的
PreferenceScreen
对象直观地区分它们。感谢您的澄清。我知道首选项不是SharedReference,但现在我想我理解了文档的意思:例如,如果代码是
Preference p=newpreference()
,然后代码调用
p.getSharedReferences()
,而没有像您所说的那样将其添加到层次结构中,那么它可能(会吗?)return
null
@alokoko:从阅读源代码可以看出,您的解释是正确的。