为什么我的 SharedPreferences 没有在应用程序启动后立即加载?
Why aren't my SharedPreferences loading right after application launch?
我正在使用 SharedPreferences
来存储用户输入,这样当应用程序关闭然后重新启动时,用户输入会保留在那里,而不是自动删除自身。但是,当我在关闭应用程序后重新启动应用程序时,用户输入不会出现在屏幕上,直到用户添加另一个输入。在用户添加另一个输入后,在关闭应用程序之前在会话中添加的输入现在出现在屏幕上。知道为什么会这样吗?谢谢!
This 是在需要视觉示例的情况下发生的情况。
这是负责加载用户输入内容的方法,我在 onCreate
方法上调用了此方法:
public void loadSemesters() {
sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("SEMESTER_LIST", null);
Type type = new TypeToken<ArrayList<Semester>>() {
}.getType();
mySemesters = gson.fromJson(json, type);
if (mySemesters == null) {
mySemesters = new ArrayList<>();
}
}
此方法负责保存用户输入:
public void saveSemesters() {
sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<Semester>>() {
}.getType();
String json = gson.toJson(mySemesters, type);
editor.putString("SEMESTER_LIST", json);
editor.apply();
}
作为一个解决方案,我猜你忘记了在应用程序重新启动后将数据设置到你的视图(更新 UI),所以你需要更新你的 UI
public void loadSemesters() {
sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("SEMESTER_LIST", null);
Type type = new TypeToken<ArrayList<Semester>>() {
}.getType();
mySemesters = gson.fromJson(json, type);
//Your have your semeters arraylist , now get the data from the list and
//set it to
// your views
if (mySemesters == null) {
mySemesters = new ArrayList<>();
}
}
我正在使用 SharedPreferences
来存储用户输入,这样当应用程序关闭然后重新启动时,用户输入会保留在那里,而不是自动删除自身。但是,当我在关闭应用程序后重新启动应用程序时,用户输入不会出现在屏幕上,直到用户添加另一个输入。在用户添加另一个输入后,在关闭应用程序之前在会话中添加的输入现在出现在屏幕上。知道为什么会这样吗?谢谢!
This 是在需要视觉示例的情况下发生的情况。
这是负责加载用户输入内容的方法,我在 onCreate
方法上调用了此方法:
public void loadSemesters() {
sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("SEMESTER_LIST", null);
Type type = new TypeToken<ArrayList<Semester>>() {
}.getType();
mySemesters = gson.fromJson(json, type);
if (mySemesters == null) {
mySemesters = new ArrayList<>();
}
}
此方法负责保存用户输入:
public void saveSemesters() {
sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<Semester>>() {
}.getType();
String json = gson.toJson(mySemesters, type);
editor.putString("SEMESTER_LIST", json);
editor.apply();
}
作为一个解决方案,我猜你忘记了在应用程序重新启动后将数据设置到你的视图(更新 UI),所以你需要更新你的 UI
public void loadSemesters() {
sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("SEMESTER_LIST", null);
Type type = new TypeToken<ArrayList<Semester>>() {
}.getType();
mySemesters = gson.fromJson(json, type);
//Your have your semeters arraylist , now get the data from the list and
//set it to
// your views
if (mySemesters == null) {
mySemesters = new ArrayList<>();
}
}