2017-07-28 5 views
-2

Hallo in diesem Code zuerst überprüfe ich, ob GPS Ort erhalten kann und speichern Sie diesen Ort lat und lange dann, wenn GPS kann Ort nicht überprüfen, ob es irgendwelche gespeicherten Ort und lat und lange aus dem gespeicherten schließlich wenn Es gibt keinen gespeicherten Set-Speicherort für
Breite = 56,130366; Länge = -106,346771;Benutzer speichern Derzeitiger Standort

 if(gps.canGetLocation()) { 

     latitude = gps.getLatitude(); 
     longitude = gps.getLongitude(); 

     SharedPreferences prefs = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE); 
     SharedPreferences.Editor editor = prefs.edit(); 

     editor.putFloat(LATITUDE, (float) latitude); 
     editor.putFloat(LONGITUDE, (float) longitude); 
     editor.putBoolean("IsNotEmpty", true); 
     editor.apply(); 
    } 

    else { 

      SharedPreferences prefs = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE); 
      if (prefs.getBoolean("IsNotEmpty",true)) { 
       latitude = (double) prefs.getFloat(LATITUDE, 0); 
       longitude = (double) prefs.getFloat(LONGITUDE, 0); 
      } 
      else { 
       latitude = 56.130366; 
       longitude = -106.346771; 

      } 
    } 
+0

Wo ist das Problem machen kann? – shmosel

+0

_wenn ich den Speicherort in Shared Preferences speichere, kann ich ihn nicht laden, wo der Fehler in meinem code_ ist. Was versuchst du zu erzählen? Bitte erarbeite die Frage etwas gründlicher und füge ein paar Bilder bei, wenn nötig. – UmarZaii

+0

das Problem, wenn ich die App öffne und der Standort ausgeschaltet ist und dort kein Pref gespeichert ist, ist das Lat und Long 0 nicht geogradet = 56.130366; Länge = -106,346771; @s –

Antwort

0

Sie können Ihren Code unten ändern:

else { 
     SharedPreferences prefs = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE); 
     latitude = (double) prefs.getFloat(LATITUDE, 56.130366); 
     longitude = (double) prefs.getFloat(LONGITUDE, -106.346771); 
    } 

Auf diese Weise erhalten Sie loswerden off nicht erforderlich if-else-Block, wie gut und besser lesbaren Code.

auch, wenn Sie von

editor.commit(); 

dies speichern Daten bevorzugt synchron per Android Documentation

+0

ok, aber in latitude = (double) prefs.getFloat (LATITUDE, 56.130366) brauche float nicht doppelt wie double zu verwenden –

Verwandte Themen