2015-12-18 58 views
-1

我正在保存LatLng坐标。方法是这样的:异常解析SharedPreferences

@Override 
protected void onPause() { 
    markerList.clear(); 
    sharedPreferences=getPreferences(Context.MODE_PRIVATE); 
    editor=sharedPreferences.edit(); 
    key =0; 
    for (LatLng latlng:markerList){ 
     double lat = latlng.latitude; 
     double lng = latlng.longitude; 
     editor.putString("key"+key,lat+","+lng); 
     key++; 
    } 
    editor.putInt("id",key); 
    editor.apply(); 

    super.onPause(); 
} 

当我试图让字符串和解析双:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    markerList = new ArrayList<>(); 
    setContentView(R.layout.activity_maps); 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
    sharedPreferences=getPreferences(Context.MODE_PRIVATE); 
    try{ 
     key = sharedPreferences.getInt("id",0); 
     for (int i =0;i<=key;i++){ 
      if (sharedPreferences!=null){ 
       String toSplit = sharedPreferences.getString("key"+i, null); 
       String[] split = toSplit.split(","); 
       double lat = Double.parseDouble(split[0]); 
       double lng = Double.parseDouble(split[1]); 
       LatLng latLng = new LatLng(lat,lng); 
       markerList.add(latLng); 


      } 

     } 
    }catch (NullPointerException e){ 
     e.printStackTrace(); 
    }catch (NumberFormatException n){ 
     n.printStackTrace(); 
    } 

我得到:

java.lang.NumberFormatException: Invalid double: "lat/lng: (13.182902096722074" 

在这一行:

double lat = Double.parseDouble(split[0]); 

我已经完成了1000次代码,一切都很顺利对我来说?我错过了什么?

+0

你能告诉我们什么'String toSplit = sharedPreferences.getString(“key”+ i,null);'return? – Mauker

回答

1

保存这些数字时,您没有使用好格式。 (或者至少看起来像你的logcat)。

我相信你想要的,并试图挽救这样的:

"13.182902096722074,14.182902096722074" 

但是相反,你有这样的事情格式:

"lat/lng: (13.182902096722074,14.182902096722074)" 

你不必把那个"lat/lng:部分当您保存数据在SharedPreferences


编辑:从你回答什么。看来您之前保存了该格式的偏好设置,并稍后更改了代码。但是要么忘记重新运行你的代码,要么你正在阅读一个旧的文件SharedPreferences

+0

它看起来像,他不是=>'editor.putString(“key”+ key,lat +“,”+ lng);' – Blackbelt

+0

看起来像从logcat我的意思。 – Mauker

0

从错误消息看来,它看起来像读取的格式与您当前保存的不同。您以前是否以“lat/lng:(lat,lng)”格式保存数据,而不是您当前的格式“lat,lng”?如果是这样,您需要清除该数据。