从输入用户保存名称和网站的持久数据

时间:2013-03-23 19:31:04

标签: java android sharedpreferences persistent

我有两个名称和网址的编辑文字。 按“保存”按钮后,我想保存此信息。

所以我决定使用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>

我的目标是保存很多名字对象              http://www.google.co.uk         谷歌     

<map>
    <string name="url">http://www.yahoo.co.uk</string>
    <string name="name">YAhoo</string>
</map>

依此类推。

2 个答案:

答案 0 :(得分:0)

您可以使用url和name创建json对象,并将它们放入jsonArray中,您可以将其作为字符串提交或创建对象以存储名称和url,将其放入列表中,然后只序列化/反序列化列表和把它放在prefs。

PS:在你放入两个/所有值之后只调用一次提交,最好不要从UI线程中调用,或只调用一次apply()。

答案 1 :(得分:0)

您可以将数组存储为字符串并保存,或者您只需为每个项目创建一个新密钥,所以

  1. LOCATION1
  2. LOCATION2
  3. LOCATION3
  4. 要做第二种方法,你可以看看这个问题:

    Android store array in preferences

    我还会有一个保存项目数量的密钥,因此您可以加载该密钥,增加,保存,然后使用新计数器作为新密钥的名称,因此location + cntr