首选位置的保存位置始终为空

问题描述 投票:0回答:1

我尝试在我的首选项上保存一个位置。 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;
}

有任何建议吗?

android gson sharedpreferences
1个回答
0
投票

尝试一下

SharedPreferencesEditor创建变量。

  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");
© www.soinside.com 2019 - 2024. All rights reserved.