慕婉清6462132
2022-07-27 20:07:53
每次我的 Android 應用程序啟動時,我都會從我的服務器獲得一個arraylist, MatchingArrayList: try { JSONArray Object = new JSONArray(MatchingAsString); //for every object in the Array for (int x = 0; x < Object.length(); x++) { final JSONObject obj = Object.getJSONObject(x); MatchingArrayList.add(obj.getString("usernameMatch")); }它看起來像這樣:[+111, +222]然后我像arraylist這樣保存sharedpreferences: SharedPreferences sharedPreferencesMAL = PreferenceManager.getDefaultSharedPreferences(getApplication()); SharedPreferences.Editor editorMAL = sharedPreferencesMAL.edit(); Gson gsonMAL = new Gson(); String jsonMAL = gsonMAL.toJson(MatchingArrayList); editorMAL.putString("MatchingArrayList", jsonMAL); editorMAL.commit();所以下次使用該應用時,如果MatchingArrayList已更改為[+111, +222, +333],例如,它將覆蓋上次使用arraylist的[+111, +222]它運行良好,除非MatchingArrayList是null或為空。sharedpreferences不更新。我試過了: if (MatchingArrayList == null) { SharedPreferences sharedPreferencesMAL = PreferenceManager.getDefaultSharedPreferences(getApplication()); SharedPreferences.Editor editorMAL = sharedPreferencesMAL.edit(); editorMAL.putString("MatchingArrayList", null); editorMAL.commit(); } else { //save MatchingArrayList into sharedpreferences so we can use it elsewhere SharedPreferences sharedPreferencesMAL = PreferenceManager.getDefaultSharedPreferences(getApplication()); SharedPreferences.Editor editorMAL = sharedPreferencesMAL.edit(); Gson gsonMAL = new Gson(); String jsonMAL = gsonMAL.toJson(MatchingArrayList); editorMAL.putString("MatchingArrayList", jsonMAL); editorMAL.commit(); } But still the last arraylist is being used. How can I fix this?
1 回答

慕運維8079593
TA貢獻1876條經驗 獲得超5個贊
我沒有查看我的 java,arraylist而是檢查了我的應用程序一側response是否為空。php像這樣:
if (response.isEmpty()) {
SharedPreferences sharedPreferencesMatchingContactsAsArrayList = PreferenceManager.getDefaultSharedPreferences(getApplication());
SharedPreferences.Editor editorMatchingContactsAsArrayList = sharedPreferencesMatchingContactsAsArrayList.edit();
editorMatchingContactsAsArrayList.putString("MatchingContactsAsArrayList", "");
editorMatchingContactsAsArrayList.commit();
} else {
這解決了我的問題,更新了sharedpreferences.
添加回答
舉報
0/150
提交
取消