我需要将位置从Location转换为String以在EditText中显示。然后,我需要再次将这些字符串转换回坐标以将其设置为位置对象。
这就是我的所作所为:
String latitude = mLocation.convert(mLocation.getLatitude(), mLocation.FORMAT_DEGREES);
String longitude = mLocation.convert(mLocation.getLongitude(), mLocation.FORMAT_DEGREES);
latitudeEditText.setText(latitude);
longitudeEditText.setText(longitude);
这样,我将43.56432
之类的内容转换为43,56432
。
现在,我需要将此值从EditText设置回Location。这就是我的工作:
String latitude = latitudeEditText.getText().toString();
String longitude = longitudeEditText.getText().toString();
mLocation.setLatitude(mLocation.convert(latitude));
mLocation.setLongitude(mLocation.convert(longitude));
但是当mLocation.convert(latitude)
投掷IllegalArgumentException
。
在文档sais中:
public static double convert (String coordinate)
Added in API level 1
Converts a String in one of the formats described by FORMAT_DEGREES,
FORMAT_MINUTES, or FORMAT_SECONDS into a double.
Throws
NullPointerException if coordinate is null
IllegalArgumentException if the coordinate is not in one of the valid formats.
所以,这告诉我字符串不是DEGREE格式,但这不可能,因为我使用booth方式使用convert()方法来做正确的事。
答案 0 :(得分:1)
刚刚尝试了快速测试,一切都按预期工作:
Location mLocation = new Location("");
mLocation.setLatitude(43.56432);
String latitude = Location.convert(mLocation.getLatitude(), Location.FORMAT_DEGREES);
Log.d(TAG, "Latitude: " + latitude);
double latitudeDouble = Location.convert(latitude);
Log.d(TAG, "Latitude double: " + latitudeDouble);
输出:
01-30 16:12:53.628: D/LocationActivity(29240): Latitude: 43.56432
01-30 16:12:53.628: D/LocationActivity(29240): Latitude double: 43.56432
您的EditText上是否有任何TextWatchers或其他任何逻辑用逗号替换句点?
另外,请确保静态访问静态字段。