我显然没有足够的声誉来添加评论并请求澄清某个主题,因此我将不得不在此处重新添加问题。
根据链接: Can't put double SharedPreferences
评分最高的答案是从共享偏好中返回双精度的最佳方式:
double getDouble(final SharedPreferences prefs,
final String key, final double defaultValue) {
return Double.longBitsToDouble(prefs.getLong(key, Double.doubleToLongBits(defaultValue)));
}
我无法确定参数defaultValue
的内容。这个参数应该是一个变量(如双精度型),原始值是吗?这是我班上独一无二的吗?它是什么?
如果可能,有人会介意给出一个例子,这样我可以更好地理解它吗?
谢谢!
答案 0 :(得分:3)
defaultValue是没有将此键定义为" key"在共享pref中,例如,如果您是第一次检索数据而您没有为您的密钥写一个值,它将返回defaultValue。
double getDouble(final SharedPreferences prefs, final String key, final double defaultValue)
{ return Double.longBitsToDouble(prefs.getLong(key, Double.doubleToLongBits(defaultValue)));}
假设您已将542.3放入myDouble
getDouble("myDouble" , 5.0); // will return 542.3
但是如果你还没有把任何东西放进myDouble
getDouble("myDouble" , 5.0); // will return 5
常见的用途是跟踪数据,用户可以清除数据(想象一下游戏中的高分),这样你就不想检查它是否存在,而是用默认值启动它
getDouble("highscore" , 0.0); // will return highscore if exists otherwise will return 0
答案 1 :(得分:1)
将首选项设置为获取字符串....
latitude = location.getLatitude();
longitude = location.getLongitude();
//save last valid position
String mLastLatitude = latitude.toString();
myPreferences.setLastLatitude(mLastLatitude);
String mLastLongitude = longitude.toString();
myPreferences.setLastLongitude(mLastLongitude);
//get last position
lastLatitude = Double.valueOf(myPreferences.getLastLatitude());
lastLongitude = Double.valueOf(myPreferences.getLastLongitude());