从输入用户保存名称和网站的持久数据
Posted
技术标签:
【中文标题】从输入用户保存名称和网站的持久数据【英文标题】:Persistent data to save name and website from input user 【发布时间】:2013-03-23 19:31:04 【问题描述】:我有两个编辑文本的名称和网址。 按“保存”按钮后,我想保存这些信息。
所以我决定使用 SharedPreferences 来存储它,没关系。
SharedPreferences addActivityPrefs = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = addActivityPrefs.edit();
editor.putString("name", name.getText().toString()).commit();
editor.putString("url", url.getText().toString()).commit();
但我的问题是,当我想存储其他值时,它会覆盖我以前的值 我想保留所有这些。
这是我的 xml 文件:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="url">http://Google.co.uk</string>
<string name="name">BBC world news feed</string>
</map>
我的目标是保存多对 name-url 之类的 http://www.google.co.uk 谷歌
<map>
<string name="url">http://www.yahoo.co.uk</string>
<string name="name">YAhoo</string>
</map>
等等等等。
【问题讨论】:
你为什么不用 sqlite 表呢? 因为我有一些要求要遵循.. 【参考方案1】:您可以将数组存储为字符串并保存,或者您可以为每个项目创建一个新键,所以有
-
位置1
位置2
位置3
要做第二种方法,你可以看看这个问题:
android store array in preferences
我也有一个保存项目数量的键,所以你可以加载那个键,递增,保存,然后使用新的计数器作为新键的名称,所以location + cntr
【讨论】:
【参考方案2】:您可以使用 url 和 name 创建 json 对象并将它们放入一个 jsonArray 中,您可以将其作为字符串提交,或者创建您的对象来存储名称和 url,将其放入列表中,然后只需序列化/反序列化列表和把它放在首选项中。
PS:在您输入两个/所有值后仅调用一次 commit,最好不要从 UI 线程调用一次,或者只调用一次 apply()。
【讨论】:
以上是关于从输入用户保存名称和网站的持久数据的主要内容,如果未能解决你的问题,请参考以下文章