Java 使用SharedReferences保存和加载不起作用

Java 使用SharedReferences保存和加载不起作用,java,android,Java,Android,我曾尝试使用SharedReferences来保存我的ToDoList,但不幸的是,我很难让它正常工作 这是我的代码: @凌驾 受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.activity_main; 负荷数据; ... } 私有void加载数据{ 如果初始启动{ SharedPreferences SharedPreferences=Ge

我曾尝试使用SharedReferences来保存我的ToDoList,但不幸的是,我很难让它正常工作

这是我的代码:

@凌驾 受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.activity_main; 负荷数据; ... } 私有void加载数据{ 如果初始启动{ SharedPreferences SharedPreferences=GetSharedPreferences共享首选项,模式\私有; Gson Gson=新Gson; String json=SharedReferences.getStringtask lisk,null; Type=newtypetoken{ }.getType; AddItemActivity.listItems=gson.fromJsonjson,类型; initialStart=false; } 如果AddItemActivity.listItems==null{ AddItemActivity.listItems=新建ArrayList; } 如果适配器==null{ adapter=new ArrayAdaptergetApplicationContext,android.R.layout.simple_list_item_1,AddItemActivity.listItems; } adapter.notifyDataSetChanged; } 公共无效存储数据{ SharedReferences SharedReferences=GetSharedReferencesTodo列表,模式为私有; SharedReferences.Editor=SharedReferences.edit; Gson Gson=新Gson; 字符串json=gson.toJsonAddItemActivity.listItems; editor.putStringtask列表,json; editor.apply; } @凌驾 暂停时受保护的无效{ super.onPause; } 我创建了一个单独的AddItem布局,其中创建了一个ArrayList,因此我使用AddItemActivity.listItems调用它。

您在共享引用中使用的键不同

在从SharedReferences保存和检索数据时,需要使用相同的密钥

当您从SharedReferences获取数据时,您使用了task lisk键 当您在SharedReferences中保存了数据时,您就使用了任务列表

像这样

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();
    }
存储和检索数据时,您的SharedReference名称必须相同

 SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);
您正在使用此名称进行存储,但在检索时它是不同的。所以改变

 SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);


您是否检查了JSON字符串的创建是否正确?
SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);