2016-04-07 92 views
0

我想在商店的位置保存在我的共享偏好,並可以對其進行編輯,並打開它時,應用程序啓動,謝謝,我有這個:如何使用共享首選項保存位置Android?

//load shared preferecnes 
SharedPreferences sharedpreferences = getSharedPreferences("MyPrefs", 
                  Context.MODE_PRIVATE); 
//note: here idk how to read the last value of position saved 
//Log.v("lastposition", sharedPreferences); 

// on edit preferences and save 
SharedPreferences.Editor editor = sharedpreferences.edit(); 
editor.putString("position", New LatLang(30,40)); 
editor.commit(); 

謝謝大家:)


最後編輯時間的變化:

//load shared preferecnes 
SharedPreferences sharedpreferences = getSharedPreferences(this,Context.MODE_PRIVATE); 

// --> HERE IDK HOT LOAD LAST POSITIONS SAVED 

// on edit preferences and save 
SharedPreferences.Editor editor = sharedpreferences.edit(); 
editor.putDouble("position_lat", 30d); 
editor.putDouble("position_lon", 40d); 
editor.commit(); 
+1

究竟是什麼問題?保存偏好,還是加載? –

+1

您無法將所需的任何內容存儲到首選項中。你必須將你的'LatLong'對象拆分爲字符串,int等。 –

+0

現在我可以使用double來保存它,但現在我的問題是加載它,謝謝 –

回答

3
sharedPreferences.getString("position", new LatLng(30,40).toString()); 

如果您的應用程序沒有保存在「位置」的信息,它需要加載默認值。這裏是LatLng(30,40)。 但是,您無法保存LatLng等複雜對象。你可以做的,而不是被保存/加載經緯度值:

//load shared preferecnes 
SharedPreferences sharedpreferences = getSharedPreferences(this,Context.MODE_PRIVATE); 
//note: here you load the saved latitude and longitude values into the variable with name "loaded_position": 

LatLng loaded_position = new LatLng(0,0); 
loaded_position.latitude= sharedpreferences.getFloat("position_lat", 15f); 
loaded_position.longitude = sharedpreferences.getFloat("position_lon", 15f); 
Log.v("lastposition", "loaded position: ("+loaded_position.latitude+","+loaded_position.longitude+")"); 

// on edit preferences, save the LatLng Object: 
SharedPreferences.Editor editor = sharedpreferences.edit(); 
LatLng currentPosition = new LatLng(30f,40f); 
editor.putFloat("position_lat", (float) currentPosition.latitude); 
editor.putFloat("position_lon", (float) currentPosition.longitude); 
editor.commit(); 

此代碼,加載你的編輯保存的(30,40)到loaded_position。它應該在第一次啓動應用程序時加載15,15,因爲30,40在第一次啓動時並未保存在sharedPreferences中。

+0

然後閱讀它應該是 - > sharedPreferences.getString(「position_lat」) ; ?或者如何?謝謝 –

+0

是的,是的,我的意思是,getDouble,但是我在字段'defaultvalue'中放了什麼?謝謝 –

+0

defaultvalue是在您的sharedpreferences中找不到關鍵字「position_lat」時加載的值。所以使用任何值就像在答案15d – MojioMS