Android - ListPreference保存到文件或条目点击监听器?

时间:2011-04-20 22:49:24

标签: android android-preferences

我的应用程序有一个首选项文件“settings”,其中包含10个键/值对。

键用作用户的标题,值是URL的

密钥和值都可由用户改变,例如第一个设置看起来像“example”,其值为“example.com”,当用户更改该设置时,该键也会更改。因此,第一个设置将变为“different_example”,其值为“different_example.com”。全部存储在“设置”首选项文件下。

到目前为止,我一直在管理这个,通过在ArrayList中打开一个包含当前键/值对的对话框,该对象具有onItemClickListener,弹出第二个对话框,其中包含可能的键/值对的另一个ArrayList。单击新项目时,我删除当前设置,添加新设置,然后使用新设置重新填充初始ArrayList。这样可以同时更改和更新键和值,但是使用这两个对话框看起来很尴尬。

我想把它全部转换为ListPreferences。如同,有十个不同的ListPreference项,每个设置一个,单击时打开所有可能的entryValues的列表,选中后,从条目名称更新密钥,并从条目值中更新值,并将其保存在相同的“设置”文件。我没有看到如何将ListPreferences保存到特定文件,因此我可以调用

SharedPreferences settings = getSharedPreferences("settings", 0);

在任何地方,但

我一直在寻找某种点击处理程序,以便在选择条目时触发什么,这样我就可以手动更新“设置”文件,但没有运气。这样的事情存在吗?或者我还有另一种方法吗?

编辑:我可以使用OnPreferenceChange手动设置新值,但这不会返回值名称,例如人类可读列表中使用的值。关于如何获得的任何想法?

2 个答案:

答案 0 :(得分:0)

看看这是否可以为您提供快速启动:How do I get preferences to work in Android?

如果您自定义ListPreference并遇到类似How to make a Preference not save to SharedPreferences?

的内容

答案 1 :(得分:0)

啊,这看起来非常倒退,但我所做的是将每个ListPreference设置为具有onPreferenceChangeListener,并且ListPreference的每个entryValue包含名称以及由任意字符串分隔的值。然后在onPreferenceChange中,我可以引用新值(现在也包含新键)将其转换为任意分隔符的String []拆分,然后将String [] 0索引指定为新键,并指定1索引删除原始设置后使用SharedPreferences.Editor作为新值。

除非有某种方法可以从ListPreference的entryValues数组返回Entry名称,或者指定ListPreference保存到特定的设置文件,这两个文件都没有记录,那么这对我来说可能是最好的解决方案。