2011-10-09 50 views
2

我可以读取和写入共享首选项并验证生成的XML文件是否正确。但是,有可能建立一个偏好层次结构而不是一个简单的列表?Android偏好设置 - 它们可以分层吗?

我直接从我的代码访问首选项,所以解决方案不能假定应用程序中存在首选项屏幕。我找到了PreferenceGroup,PreferenceCategory和PreferenceManager类,但它们似乎假定存在首选项屏幕。

+0

定义你的意思是“分层”,如果你不是在谈论PreferenceScreen。您可以声明任意数量的首选项依赖于给定的首选项(http://developer.android.com/reference/android/preference/Preference.html#attr_android:dependency)。 – Turnsole

+0

@Hydrangea:按等级划分,我的意思是一个项目可以有子项目的结构。首选项使用SharedPreferences.Editor存储,并且它们驻留在XML文件中。由于层次结构在XML中是可能的,所以我希望找到一种方法来构建我的偏好数据的结构表示。 – Dabbler

回答

1

但是有可能建立一个偏好层次结构而不是一个平面列表?

不,对不起。从你的问题的其余部分,你不清楚为什么你首先使用SharedPreferences,而不是另一个持久数据模型(数据库,XML文件,JSON文件等)

+0

感谢您的回答。我很可能正在尝试错误的方法。基本上我正在移植一个将应用程序存储在Windows注册表中的Windows应用程序。应用程序通过抽象接口访问持久性存储(注册表或其他任何东西),所以我需要做的事情(在这个问题的范围内)派生出一个新类,它实现了类似于Android注册表的类。例如。删除密钥意味着删除所有子密钥。由于共享属性驻留在一个XML文件中,这似乎是一种很有前途的方法 - 我无法找到比平面列表更多的API。 – Dabbler

+0

所以也许我自己的一个单独的XML文件是一个更好的方法,因为Java似乎提供了很好的读取/写入XML的工具。感谢和+1 :-) – Dabbler

+0

@Dabbler:通常,'SharedPreferences'是注册表的一个很好的替代品,但只适用于键值对的平面列表。但是,如果您复杂地使用注册表,则最好使用其他数据存储。 – CommonsWare