2017-07-28 68 views
-2

你好這個代碼首先我檢查,如果GPS能得到位置和保存位置 lat和長那麼如果GPS不能得到位置檢查是否有任何保存的位置,並從所保存的最後,如果設置lat和長
緯度= 56.130366;經度= -106.346771;保存用戶當前位置

 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

在哪裏的問題? – shmosel

+0

_when我保存共享首選項中的位置我不能再次加載它在我code_中的錯誤。你想說什麼?請更徹底地闡述這個問題,並在必要時 – UmarZaii

+0

問題包括一些照片當我打開應用程序,該位置在並且在PREF LAT中沒有保存的長是0不是緯度= 56.130366;經度= -106.346771; @s –

回答

0

您可以修改代碼以如下:

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); 
    } 

這樣你擺脫掉不需要的if-else塊以及更可讀的代碼。

另外,如果你可以利用

editor.commit(); 

這將數據保存偏好同步按Android Documentation

+0

確定但緯度=(雙倍)prefs.getFloat(LATITUDE,56.130366)需要float不是double如何使用double –