繁体   English   中英

如何从SharedPreferences返回双精度数(Android)

[英]How to return a double from SharedPreferences (Android)

我显然没有足够的声誉来添加评论并要求对某个主题进行澄清,因此我将不得不在此处重新添加问题。

根据链接: 不能放置两个SharedPreferences

评分最高的答案是从sharedpreferences返回双精度值的最佳方法,如下所示:

double getDouble(final SharedPreferences prefs,
                 final String key, final double defaultValue) {
    return Double.longBitsToDouble(prefs.getLong(key, Double.doubleToLongBits(defaultValue)));
}

我在确定参数defaultValue中遇到什么麻烦。 这个参数是否应该是一个变量(像双精度一样)与原始值相同? 这是我班上唯一的吗? 它是什么?

如果可能的话,有人介意给出一个示例,以便我可以更好地理解它吗?

谢谢!

defaultValue是在共享首选项中没有定义为“ key”的键时得到的结果,例如,如果您是第一次检索数据,而您没有为键写值,它将返回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

设置和获取首选项为字符串...。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM