当前位置: 首页 > 知识库问答 >
问题:

不能放双SharedPreferences

翟理
2023-03-14

获取错误时,对于这种类型的sharedPreferences编辑器,方法put double是未定义的。Eclipse得到了一个快速修复程序add cast to editor,但当我这样做时,它仍然给定错误,为什么我不能put double。

代码:

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();

    if (TextUtils.isEmpty(editBl.getText().toString())) {
        numberOfBl = 0;
    } else {
        numberOfBl = Integer.parseInt(editBl.getText().toString();

    }
    if (TextUtils.isEmpty(editSt.getText().toString())) {
        tonOfSt = 0;
    } else {
        tonOfSt = Double.parseDouble(editSt.getText().toString());

    }

    SharedPreferences prefs = getSharedPreferences(
            "SavedTotals", Context.MODE_PRIVATE);

    SharedPreferences.Editor editor = prefs.edit();

    editor.putInt("savedBl", numberOfBl);
    editor.putDouble("savedSt", tonOfSt);


    editor.commit();
}

共有1个答案

丁毅庵
2023-03-14

不幸的是,那些建议使用putFloat和getFloat的人是非常错误的。将double转换为float会导致

  1. 丢失精度
  2. 溢出
  3. 下溢
  4. 死去的小猫

那些建议使用toString和parseString的人并没有错,但这是一个低效的解决方案。

Editor putDouble(final Editor edit, final String key, final double value) {
   return edit.putLong(key, Double.doubleToRawLongBits(value));
}

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

return Double.longBitsToDouble(prefs.getLong(key, 0));
}
 类似资料:
  • 我以前为MapView做过这项工作,它非常简单,因为有预定义的方法,比如或等。 有人在地图片段中尝试过双击或双击缩放功能吗?我谷歌了一下,但仍然找不到任何解决方案。 我刚刚开始添加UiSetting只 它将由的帮助来实现,还是有什么东西来处理地图片段的双击事件的手势? 注意:这个问题纯粹是关于MapFragment的,与MapView无关,后者已经回答了双击:在Android MapView上缩放

  • 问题内容: GNU手册页定义了当使用相同的指针(先前由分配)两次调用时,“发生未定义的行为”。 那是什么样的行为? 在哪里可以找到有关这种错误的更多信息? 问题答案: “未定义的行为”仅表示不需要以任何特定方式处理该情况的实现; 任何 行为或结果均被视为“正确”。 多次对指针进行操作的结果取决于; 的基础实现;结果可能是崩溃和核心转储,或者可能破坏竞技场(破坏将来的分配/释放),或者可能完全忽略双

  • 问题内容: 经过一番工作后,我的路线申请工作正常。我唯一想添加的就是双击放大功能,但我不知道如何操作。 你能给我一个提示吗? 问题答案: 实现GestureListener来接收doubleTap事件。

  • 我在Box2d上遇到了问题,因为我是Box2d新手,所以无法处理我的播放器的移动。当用户在我的游戏中触摸左右按钮时,我想将我的玩家左右移动。在我的游戏中,玩家已经通过了y轴。我想在控制播放器的同时看到很酷的平滑动画。我就是不能把我的球员移到左边我怎么能做到?提前谢谢 //编辑 我创建了一个测试夹具,我可以移动夹具,但不能移动我的球员。如何将我的玩家精灵连接到身体上?我必须找到控制身体的正确方法。一

  • 我在运行命令flutter run--release时会出现很多错误。 颤振医生-V

  • 背景介绍 bg:双非本 实习:顺丰+货拉拉 项目:秋招烂大街博客项目、春招换成了马哥的短链接 秋招春招拿到的面试和offer 秋招:后端中大厂只有一个面试就是货拉拉(零星的一两个小厂没必要提了) 春招:汽车之家、树美科技、小黑盒、美团(春招确实相比秋招多了很多,感觉一部分是项目确实更入眼了以及经历更丰富了) 秋招春招感悟 就目前校招生而且感觉很看重学历以及实习经历或者有好的项目、开源经历等等。 但