亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 SharedPreferences 保存和加載不起作用

使用 SharedPreferences 保存和加載不起作用

慕田峪7331174 2022-10-12 16:03:12
我已經嘗試使用 sharedpreferences 來保存我的 ToDoList,但不幸的是我很難讓它工作。這是我的代碼:@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);              loadData();              ...    }    private void loadData() {        if (initialStart) {            SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);            Gson gson = new Gson();            String json = sharedPreferences.getString("task lisk", 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();    } @Override    protected void onPause() {        super.onPause();    }我創建了一個單獨的 AddItem 布局,并在其中創建了一個 ArrayList,這就是我使用 AddItemActivity.listItems 調用它的原因。
查看完整描述

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();

    }


查看完整回答
反對 回復 2022-10-12
?
呼喚遠方

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);


查看完整回答
反對 回復 2022-10-12
  • 2 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號