arraylist的格式应为[{"12345"}, {"67890"}, etc...]
但是当我关闭我的应用程序时 - 我的意思是按下后退按钮返回Android主屏幕所需的时间 - 然后重新启动它,我看到MatchingContactsAsArrayList
是[{"12345"}, {"67890"}, etc...,{"12345"}, {"67890"}, etc...]
< / p>
如果我关闭它两次,arraylist
会出现3次,依此类推,它会持续变长。它应该只显示一次值。
我想editorMatchingContactsAsArrayList.remove(jsonMatchingContactsAsArrayList).commit();
会解决这个问题。
这是我的代码:
@Override
public void onResponse(String response) {
//convert the JSONArray, the response, to a string
String MatchingContactsAsString = response.toString();
//make an arraylist which will hold the phone_number part of the MatchingContacts string
MatchingContactsAsArrayList = new ArrayList<String>();
try {
JSONArray Object = new JSONArray(MatchingContactsAsString);
for (int x = 0; x < Object.length(); x++) {
final JSONObject obj = Object.getJSONObject(x);
MatchingContactsAsArrayList.add(obj.getString("phone_number"));
}
SharedPreferences sharedPreferencesMatchingContactsAsArrayList = PreferenceManager.getDefaultSharedPreferences(getApplication());
SharedPreferences.Editor editorMatchingContactsAsArrayList = sharedPreferencesMatchingContactsAsArrayList.edit();
Gson gsonMatchingContactsAsArrayList = new Gson();
String jsonMatchingContactsAsArrayList = gsonMatchingContactsAsArrayList.toJson(MatchingContactsAsArrayList);
editorMatchingContactsAsArrayList.putString("MatchingContactsAsArrayList", jsonMatchingContactsAsArrayList);
editorMatchingContactsAsArrayList.remove(jsonMatchingContactsAsArrayList).commit();
editorMatchingContactsAsArrayList.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
SharedPreferences.remove()
方法接收您以前保存的key
。
在这种情况下是&#34; MatchingContactsAsArrayList&#34;。
实际上,您不需要使用remove()
,因为现有putString()
的{{1}}会覆盖该值。请确保响应中的数据正确无误。