Итак, я сохранил некоторые координаты в SharedPreferences
, но когда я пытаюсь вернуть их, latitude
возвращается нормально, как: 44.374736436
, но longitude
возвращает только 26
, даже когда я сохраняю его, я сохраняю его как: 26.24343343
. Где я его сохраняю:
PunctSalvat_SP punct = new PunctSalvat_SP(
String.valueOf(latitudine_start),
String.valueOf(longitudine_start),
id_alerta
);
SharedPrefManager.getInstance(getApplicationContext()).SalvarePunct(punct);
SharedPreferences.SalvarePunct ():
public void SalvarePunct(PunctSalvat_SP punctSalvat) {
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_PUNCT, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(KEY_latitudine, punctSalvat.getLatitudine());
editor.putString(KEY_longitudine, punctSalvat.getLongitudine());
editor.putString(KEY_id_marker, punctSalvat.getid());
editor.apply();
}
Класс PunctSalvat_SP:
public class PunctSalvat_SP {
private String latitudine, longitudine, id;
public PunctSalvat_SP(String latitudine, String longitudine, String id) {
this.latitudine = latitudine;
this.longitudine = longitudine;
this.id = id;
}
public String getLatitudine() {
return latitudine;
}
public String getLongitudine() {
return longitudine;
}
public String getid() {
return id;
}
}
Где я попробуйте получить его обратно:
if (SharedPrefManager.getInstance(this).ExistaPunct()) {
ArrayList<String> punct_ramas_in_memorie = new ArrayList<String>();
PunctSalvat_SP punct = SharedPrefManager.getInstance(this).getPunct();
punct_ramas_in_memorie.add(punct.getLatitudine());
punct_ramas_in_memorie.add(punct.getLongitudine());
ruta_pentru_o_problema_id.add(punct.getid());
CrearePunctDinRuta(punct_ramas_in_memorie);
}
SharedPreferences.ExistaPunct () и SharedPreferences.getPunct ():
public boolean ExistaPunct() {
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_PUNCT, Context.MODE_PRIVATE);
return (sharedPreferences.getString(KEY_latitudine, null) != null && sharedPreferences.getString(KEY_longitudine, null) != null);
}
public PunctSalvat_SP getPunct() {
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_PUNCT, Context.MODE_PRIVATE);
return new PunctSalvat_SP(
sharedPreferences.getString(KEY_latitudine, null),
sharedPreferences.getString(KEY_longitudine, null),
sharedPreferences.getString(KEY_id_marker, null)
);
}
Отладка кода, я заметил следующее: Когда я сохраняю его, punct
имеет правильное значение (например: punct = (44.3432432423, 26.1323232, 26)
), но когда я пытаюсь вернуть его, arraylist
punct_ramas_in_memorie
возвращает 2 элемента, 1-й является правильным latitude
, а 2-й возвращает только 26
вместо 26.242423432
.