众所周知,PreferenceActivity
及其EditText-
,List-
和其他***Preference
类仅支持String
类型的首选项。目前尚不清楚为什么(事实上,这会严重降低Android的标准SharedPreferences
),但事实并非如此,而且似乎与此无关。
我想支持所有标准类型的共享偏好设置(Boolean
,Float
,Int
,Long
,String
,{{1} })无缝地保留String Set
提供的外观。可能需要的情况之一是应用程序中已经存在某些首选项,并且它们不是字符串。
当然,将现有首选项转换为字符串有一种简单明了的方法,但它很丑陋,是一种不得已而为之。另一种方法是从头开始创建一个模仿PreferenceActivity
功能并处理所有类型的活动。这似乎有太多的日常工作。
有人知道并且可以建议支持所有标准类型的此类扩展PreferenceActivity
后代的现有实现吗? ***Preference
和EditTextPreference
模板化为必需类型就足够了。
如果在UI中有其他方式可以轻松使用不同类型的偏好,请同时提及它们。
答案 0 :(得分:0)
创建自己的MyPreferenceActivity相当容易,不是吗?在该活动中,您可以实现所需的所有类型的首选项,甚至可以创建新的首选项。将标准SharedPreferences包装在应用程序首选项层中是一种很好的编程习惯,因此除了此包装类之外,您的应用程序不依赖于首选项的实现。在该类中,您可以使用SharedPreferences具有的标准首选项创建所需的每种类型的首选项。或者您可以将它们存储在数据库,文件或云中。如果在活动中使用SharedPreferences,则很难切换到使用数据库或云的实现。