2 回答

TA貢獻1815條經驗 獲得超13個贊
你沒有KEY在你的SharedPreferences
您需要在保存和檢索數據時使用相同的密鑰SharedPreferences
當您從SharedPreferences您使用的"task lisk"密鑰獲取數據并且當您將數據保存在 中時SharedPreferences,您已經使用了task list
像這樣
private void loadData() {
if (initialStart) {
SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("task_list", null);
Type type = new TypeToken<ArrayList<Record>>() {
}.getType();
AddItemActivity.listItems = gson.fromJson(json, type);
initialStart = false;
}
if (AddItemActivity.listItems == null) {
AddItemActivity.listItems = new ArrayList<>();
}
if (adapter == null) {
adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, AddItemActivity.listItems);
}
adapter.notifyDataSetChanged();
}
public void saveData() {
SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(AddItemActivity.listItems);
editor.putString("task_list", json);
editor.apply();
}

TA貢獻1856條經驗 獲得超11個贊
您的SharedPreference
姓名必須相同才能存儲和檢索數據。
SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);
您正在使用此名稱進行存儲,但在檢索時它是不同的。所以改變
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
至
SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);
添加回答
舉報