0
我想在用戶點擊屏幕時保存標記的位置,我遵循瞭如何使用共享首選項並檢索它們的適當步驟。但是當我繪製一個位置並關閉並重新打開應用程序時。該應用程序崩潰。使用共享首選項在地圖上保存地圖標記位置
這是我MapActivity:
//Keys for Sharedpreferences
public static final String SHARED_PREF_NAME = "plot";
public static final String LONGTITUDE = "long";
public static final String LATITUDE = "lat";
public static final String PLOTTED= "plotted";
private boolean plotted= false;
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
LatLng philippines = new LatLng(13, 123);
mMap.moveCamera(CameraUpdateFactory.newLatLng(philippines));
mMap.animateCamera(CameraUpdateFactory.zoomTo(5.0f));
if (ActivityCompat.checkSelfPermission(mapsPage.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mapsPage.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mMap.setMyLocationEnabled(true);
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
mMap.clear();
mMap.addMarker(new MarkerOptions().position(point).draggable(false));
mMap.moveCamera(CameraUpdateFactory.newLatLng(point));
String lat = Double.toString(point.latitude);
String lon = Double.toString(point.longitude);
SharedPreferences sharedPreferences = mapsPage.this.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(LOGGEDIN_SHARED_PREF, true);
editor.putString(LONGTITUDE, lon);
editor.putString(LATITUDE, lat);
editor.commit();
}
});
}
@Override
protected void onResume() {
super.onResume();
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
checkedout = sharedPreferences.getBoolean(LOGGEDIN_SHARED_PREF, false);
if(checkedout)
{
SharedPreferences sharedPreferencess = getSharedPreferences(mapsPage.SHARED_PREF_NAME, Context.MODE_PRIVATE);
String lon = sharedPreferencess.getString(mapsPage.LONGTITUDE,"Not Available");
String lat = sharedPreferencess.getString(mapsPage.LATITUDE,"Not Available");
double lo = Double.parseDouble(lon);
double la = Double.parseDouble(lat);
LatLng resumedPosition = new LatLng(lo,la);
mMap.clear();
mMap.addMarker(new MarkerOptions().position(resumedPosition).draggable(false));
mMap.moveCamera(CameraUpdateFactory.newLatLng(resumedPosition));
}
}
提前任何幫助謝謝! :D
你能發佈崩潰日誌嗎? – Rafael