Java 使用SharedReferences保存和加载不起作用
我曾尝试使用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中保存了数据时,您就使用了任务列表 像这样Java 使用SharedReferences保存和加载不起作用,java,android,Java,Android,我曾尝试使用SharedReferences来保存我的ToDoList,但不幸的是,我很难让它正常工作 这是我的代码: @凌驾 受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.activity_main; 负荷数据; ... } 私有void加载数据{ 如果初始启动{ SharedPreferences SharedPreferences=Ge
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);