-1

LatLng 座標を保存しています。メソッドは次のようになります。

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

文字列を取得して double に解析しようとすると:

@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回調べましたが、すべて問題ないように見えますか? 私は何が欠けていますか?

4

2 に答える 2