Reputation: 224
So, I've been saving some coordinates into a SharedPreferences
, but when I try to get them back, the latitude
returns fine like :44.374736436
, but the longitude
returns only 26
, even though when I save it, I store it like: 26.24343343
.
Where I save it:
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 class:
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;
}
}
Where I try to get it back:
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() and 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)
);
}
Debuggind the code, I observed the following:
When I save it, the punct
has the right value (Ex: punct = (44.3432432423, 26.1323232, 26)
), but when I try to get it back, the arraylist
punct_ramas_in_memorie
returns 2 elements, the 1st being the right latitude
, but the 2nd one returns only 26
, instead of 26.242423432
.
Upvotes: 0
Views: 29
Reputation: 967
Verify preference key values for KEY_longitudine and KEY_id_marker, if they are same.
If both key are same the value of id will overridden on longitude. and while retrieving value of longitude you will get value of id(what was written lastly on that key).
Upvotes: 1