2015-12-18 55 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」?如果是這樣,您需要清除該數據。