我尝试在我的首选项上保存一个位置。 SavedLocation类存储三个变量:名称,位置和位置类型。在我尝试从“首选项”中读取保存的日期之前,一切看起来都很不错。名称和位置类型可以完美存储,但是存储的位置为null。在调试中,savedlocation包含所有想要的变量,但看起来像ed.putString(SAVED_LOCATIONS, gson.toJson(savedLocations, savedLocationsType))
;不写正确的日期。
private void saveLocation(SavedLocation savedlocation, Context context) {
Gson gson = new Gson();
Type savedLocationsType = new TypeToken<ArrayList<SavedLocation>>() {}.getType();
ArrayList<SavedLocation> savedLocations = getSavedLocations(context);
savedLocations.add(savedlocation);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor ed = prefs.edit();
ed.putString(SAVED_LOCATIONS, gson.toJson(savedLocations, savedLocationsType));
ed.apply();
}
SavedLocation类是相似的:
public SavedLocation(String name, Location location, LocationType type) {
this.name = name;
this.location = location;
this.type = type;
}
有任何建议吗?
尝试一下
为SharedPreferences
和Editor
创建变量。
SharedPreferences pref;
Editor editor;
String PREF_NAME="my_location"
现在获得首选项
pref = this.getSharedPreferences(PREF_NAME, 0);
editor = pref.edit();
现在将位置添加到preference
editor.putString(SAVED_LOCATIONS, gson.toJson(savedLocations, savedLocationsType));
editor.commit();
然后获取数据
String location=pref.getString(savedLocations, "defaultvalue");