繁体   English   中英

Android-ListPreference保存到文件还是在条目上单击侦听器?

[英]Android - ListPreference save to file or on entry click listener?

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

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

用户可以更改键和值,例如,第一个设置的值类似于“ example”,其值为“ example.com”,当用户更改该设置时,键也将更改。 因此,第一个设置将变为“ different_example”,其值为“ different_example.com”。 全部存储在“设置”首选项文件下。

到目前为止,我一直在管理此问题,方法是在ArrayList中打开一个包含当前键/值对的对话框,该列表具有onItemClickListener,该对话框会弹出第二个对话框,其中包含另一个可能的键/值对的ArrayList。 单击新项目后,我将删除当前设置,添加新的设置,然后使用新设置重新填充初始ArrayList。 这可以正常工作,并且可以同时更改和更新键和值,但是在两个对话框中看起来很尴尬。

我想将其全部切换到ListPreferences。 与之类似,有十个不同的ListPreference项,每个设置一个,单击该选项将打开所有可能的entryValue的列表,并在选中后从条目名称更新键,从条目值更新值,并将其保存在相同的“设置”文件。 我没有看到如何将ListPreferences保存到特定文件,以便可以调用

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

虽然在任何地方

我还一直在寻找某种单击处理程序,以选择选定条目时要触发的操作,因此我可以手动更新“设置”文件,但没有运气。 这样的事情存在吗? 还是我还有其他方法可以做到这一点?

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

看看这是否可以让您快速入门: 如何获得在Android中工作的偏好设置?

如果您自定义ListPreference并遇到类似这样的问题如何使首选项不保存到SharedPreferences?

嗯,这似乎是令人难以置信的倒退,但是我所做的是将每个ListPreference设置为具有onPreferenceChangeListener,并将ListPreference的每个entryValue包含名称以及用任意字符串分隔的值。 然后在onPreferenceChange中,我可以引用新值(现在也包含新键),将其转换为在任意分隔符处的String []拆分,然后将String [] 0索引分配为新键,并将1索引删除原始设置后,使用SharedPreferences.Editor作为新值。

除非有某种方法可以从ListPreference的entryValues数组中返回Entry名称,或者指定ListPreference保存到特定的设置文件(两者均未记录),否则这可能是我的最佳解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM