如何在 Android 上的 SharedPreferences 中保存/存储对象?

2024-05-01

我需要在很多地方获取用户对象,其中包含很多字段。登录后,我想保存/存储这些用户对象。我们如何实现这样的场景呢?

我无法像这样存储它:

SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("BusinessUnit", strBusinessUnit);

您可以使用 gson.jar 将类对象存储到共享首选项。 您可以从以下位置下载这个 jar谷歌-gson https://github.com/google/gson/releases

或者在 Gradle 文件中添加 GSON 依赖项:

implementation 'com.google.code.gson:gson:2.8.8'

你可以找到最新版本here https://github.com/google/gson/releases

创建共享首选项:

SharedPreferences  mPrefs = getPreferences(MODE_PRIVATE);

To save:

MyObject myObject = new MyObject;
//set variables of 'myObject', etc.

Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(myObject);
prefsEditor.putString("MyObject", json);
prefsEditor.commit();

检索:

Gson gson = new Gson();
String json = mPrefs.getString("MyObject", "");
MyObject obj = gson.fromJson(json, MyObject.class);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Android 上的 SharedPreferences 中保存/存储对象? 的相关文章

随机推荐

  • Node.js + Express + Redis,什么时候关闭连接?

    我有一个使用的节点应用程序Express http expressjs com and 节点redis https github com mranney node redis 我正在遵循中概述的方法学习节点 http shop oreill
  • 每次我们想在应用程序中更改字体时,是否都必须复制 Font TTF

    以前 为了使我的应用程序可以在 Gingerbread 及以上设备中运行 我必须将 Robotto 字体资源复制到 asset 文件夹中 这是因为 Gingerbread 本身不附带 Robotto 字体 但是 假设我决定仅将我的应用程序部
  • Eclipse 在不存在的断点处停止

    我有一个 Eclipse java 项目 它在不存在的断点处停止 这个位置曾经有一个断点 但我把它删除了 有什么想法为什么会发生这种情况吗 注意 这与这里提到的问题不同 幻象断点让我发疯 https stackoverflow com qu
  • 如何在 Vim 中转置文件中的行和列的内容?

    我知道我可以使用 Awk 但我使用的是 Windows 机器 并且我正在为可能没有 Awk 的其他人创建一个函数 我也知道我可以编写 C 程序 但我不希望我正在制作的 Vim 实用程序需要编译和维护 原始文件可能是 THE DAY WAS
  • Rmarkdown:同一页面上的多个图具有单独的标题

    我正在用 R markdown 编写一份带有 pdf 输出的报告 我有几个图 我想在 2x2 矩阵中每页显示四个图 有没有办法让它们像这样显示并带有单独的标题 这是我到目前为止所尝试过的 包 gridExtra 我可以轻松设置我想要的布局
  • jquery给输入框添加百分号

    我想要一个输入框 在输入数字时自动向用户添加可见的百分号 而不仅仅是在提交时将其识别为百分比 因此 用户点击 2 并看到 2 我假设人们可以使用 Jquery 相当轻松地做到这一点 但我不知道如何做 有任何想法吗 感谢大家 您可以处理cha
  • 使用 React Hooks 输入千位分隔符

    我想使用 React Hooks 在输入上添加千位分隔符 但我不知道如何操作 到目前为止我已经尝试过下面的代码但不起作用 您能否指出可能出现的问题以及我该如何实施 谢谢 const MainComponent gt const value
  • 表达式树序列化器

    我想在客户端使用 Linq 表达式 序列化它们并在服务器端执行它们 为此我想使用 http expresstree codeplex com http expressiontree codeplex com 但我想针对自己的 WCF 调用执
  • jquery 克隆组合框无法运行

    我有下表 当我按下第一个按钮时 我调用 jquery 来克隆第一行并添加新行 table class table table striped table bordered bootstrap datatable style font siz
  • 论文中的概率密度函数,使用 C++ 实现,未按预期工作

    所以我正在实现一个启发式算法 并且我遇到了这个函数 我有一个 1 到 n 的数组 C 上的 0 到 n 1 w e 我想选择一些要复制到另一个数组的元素 给定参数 y 0 根据作者的说法 l 是一个随机数 0 所以我编写了函数的第一部分 对
  • Django 添加类到表单 字段

    我们正在寻找一种解决方案 将 CSS 类属性添加到 Django 表单的
  • 在 Makefile 的先决条件列表中使用目标的目录路径

    我编写了一个脚本 它接收两个以 cfg 结尾的文件并输出一个以 cmp 结尾的文件 我想将其包含在我的 Makefile 中 因为一些源代码文件依赖于此 cmp 文件 在我的 Makefile 中 我想这样做 cmp cfg dir def
  • Spring休眠异常

    当我启动 SpringMVC 时 出现以下异常 Apr 28 2012 6 08 23 PM org apache catalina core AprLifecycleListener init INFO The APR based Apa
  • 如何让 Docker 容器访问主机上的 dnsmasq 本地 DNS 解析器?

    Docker 容器可能会通过多种方式对 DNS 设置感到困惑 只需在 SO 或更广泛的互联网上搜索 Docker DNS 即可了解我的意思 建议的常见解决方法之一是 将 dnsmasq 设置为主机系统上的本地 DNS 解析器 将其绑定到do
  • 使用 Google Collections 创建弱多重地图

    是否有与 MultiMaps 的 MapMaker 相当的工具 目前我像这样创建缓存 public static Map
  • 带有checked和after标签的css表单复选框样式[重复]

    这个问题在这里已经有答案了 我正在尝试在不使用 JavaScript 或 JQuery 的情况下设计一个表单 它包括一系列复选框 这个想法是如果未选中复选框 则在复选框后显示某个 gif 否则 后面不显示任何内容 这是我的代码 input
  • 设计 XML 模式的最佳实践是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 作为一名业余软件开发人员 我仍在学术界 我编写了一些 XML 文档模式 我经常遇到导致 XML 文档难看的设计错误 因为我不完全确定
  • pandas_datareader 无法在 jupyter-notebook (Anaconda) 中工作

    ModuleNotFoundError Traceback 最近一次调用最后一次 在 3 从matplotlib导入样式 4 将 pandas 导入为 pd gt 5 将 pandas datareader data 导入为 web 6 7
  • 匹配 MySQL 中单词/后缀的相似/变体

    我如何匹配 MySQL 中单词的变体 例如搜索 accountancy 应匹配 accountant accountants accounting 等 我使用共享主机 因此无法向 MySQL 添加任何功能 例如 levenshtein 我想
  • 如何在 Android 上的 SharedPreferences 中保存/存储对象?

    我需要在很多地方获取用户对象 其中包含很多字段 登录后 我想保存 存储这些用户对象 我们如何实现这样的场景呢 我无法像这样存储它 SharedPreferences Editor prefsEditor myPrefs edit prefs