PreferenceActivity扩展以支持所有标准首选项类型

时间:2012-09-24 18:17:15

标签: android sharedpreferences

众所周知,PreferenceActivity及其EditText-List-和其他***Preference类仅支持String类型的首选项。目前尚不清楚为什么(事实上,这会严重降低Android的标准SharedPreferences),但事实并非如此,而且似乎与此无关。

我想支持所有标准类型的共享偏好设置(BooleanFloatIntLongString,{{1} })无缝地保留String Set提供的外观。可能需要的情况之一是应用程序中已经存在某些首选项,并且它们不是字符串。

当然,将现有首选项转换为字符串有一种简单明了的方法,但它很丑陋,是一种不得已而为之。另一种方法是从头开始创建一个模仿PreferenceActivity功能并处理所有类型的活动。这似乎有太多的日常工作。

有人知道并且可以建议支持所有标准类型的此类扩展PreferenceActivity后代的现有实现吗? ***PreferenceEditTextPreference模板化为必需类型就足够了。

如果在UI中有其他方式可以轻松使用不同类型的偏好,请同时提及它们。

1 个答案:

答案 0 :(得分:0)

创建自己的MyPreferenceActivity相当容易,不是吗?在该活动中,您可以实现所需的所有类型的首选项,甚至可以创建新的首选项。将标准SharedPreferences包装在应用程序首选项层中是一种很好的编程习惯,因此除了此包装类之外,您的应用程序不依赖于首选项的实现。在该类中,您可以使用SharedPreferences具有的标准首选项创建所需的每种类型的首选项。或者您可以将它们存储在数据库,文件或云中。如果在活动中使用SharedPreferences,则很难切换到使用数据库或云的实现。

相关问题