0

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

我想无缝支持所有标准类型的共享首选项(Boolean, Float, Int, Long, String, String Set),并保留PreferenceActivity. 可能有必要的情况之一是应用程序中确实已经存在某些首选项并且它们不是字符串的情况。

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

有人知道并且可以建议***Preference支持所有标准类型的这种扩展后代的现有实现吗?EditTextPreference,并且ListPreference模板化为所需的类型就足够了。

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

4

1 回答 1

0

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

于 2012-09-24T18:27:27.443 回答