【发布时间】:2021-03-29 01:20:39
【问题描述】:
我总是收到这个错误java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
val sharedPreferences = getSharedPreferences("prefs", MODE_PRIVATE)
val editor = sharedPreferences.edit()
var myLongitude = 36.892672
editor.putDouble("longitude", myLongitude)
editor.apply()
错误来自这里:
val savedLongitude : Double = sharedPreferences.getDouble("longitude", 0.0)
我有这些方法:
fun SharedPreferences.Editor.putDouble(key: String, double: Double) =
putLong(key, java.lang.Double.doubleToRawLongBits(double))
fun SharedPreferences.getDouble(key: String, default: Double) =
java.lang.Double.longBitsToDouble(getLong(key, java.lang.Double.doubleToRawLongBits(default)))
我的目标是将双精度值保存到 SharedPref 然后检索它
【问题讨论】:
-
您使用不同的键保存和检索值
-
另外,我不知道你是如何在 kotlin 中做到这一点的,但是在 java 中你应该在 putString(key, value) 之后调用 .commit
-
对不起,我编辑了问题
-
好的,String.valueOf(double) 代替 double.toString 怎么样?
-
是的,我之前尝试过,但我仍然得到同样的错误
标签: android kotlin sharedpreferences