如何动态创建Android偏好设置?

19
下面的模型图可能比言语更能说明问题。基本上,我想要一个列表,用户可以动态地添加/删除项目,并且每个项目都有可配置的设置屏幕。
因此,这里有两个关键点:
  1. 将其添加到主首选项屏幕
  2. 当按下项目时,启动activityForResult。此活动将显示另一个首选项视图(滑块,复选框等),用户可以在其中操纵这些视图,然后返回新值以存储在数据结构中。
图片:
http://i.stack.imgur.com/eZsfh.png

你能澄清一下它应该如何工作吗?例如,如果用户按下“添加项目”按钮,应该发生什么? - Mel
你可以尝试使用数据库:父行是“其他偏好”,而子行是该偏好中的座位。 - Andreas
3个回答

1

我建议您走Fragments的路线 - 具体来说是PreferenceFragment: http://developer.android.com/reference/android/preference/PreferenceFragment.html

我为什么认为这对您很有效:

此外,显示的首选项将遵循系统首选项的视觉样式。可以通过XML轻松创建首选项层次结构(可在多个屏幕上显示)。出于这些原因,建议在应用程序中使用此片段(作为超类)处理首选项。


1

你的问题有点模糊,但可能最好的解决方法是将用户数据存储在数据库中(并使用标准的CursorAdapterCursorLoader实例将这些数据显示给用户),而不是试图将所有内容强行放入首选项框架中。 CursorAdapter被优化用于处理任意大的结果集,而PreferenceActivity和相关类则更适合处理固定的数据集。

首选项部分的设计旨在为其特定用例提供简单的实现方式,但如果你的用例超出了该范围 - 而且听起来确实是这样 - 将数据塞进首选项模型会很麻烦。

如果你只是喜欢首选项界面,当然可以查看Android源代码,了解它是如何实现的,同时让自己的逻辑驱动该界面的变体。


-1

实际上,动态创建偏好设置屏幕很容易。您可以在代码中完成此操作(搜索API演示示例应用程序以获取PreferenceFromCode.java),也可以通过扩展可编写的XML文件(PreferencesFromXml.java)来完成。难点在于设计合理的用户界面和存储后端,以便用户可以组合和存储这些动态偏好设置集合。


13
知道这很容易,但说“去别的地方找”并不好,提供一个回答甚至是一个URL都会更好。 - Chris Noldus
看起来你指定的示例应用程序不再可用。 - SOFe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接