2011-10-09 23 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