android - 使用 OnBackPressedCallback 向后传递可打包的捆绑包
问题描述
在我的应用程序中,我使用 OnBackPressedCallback 并调用 findNavController.popBackStack 来管理向后导航。我遇到的一个限制是,当用户单击后退按钮时,我找不到将可打包捆绑包传回的方法。
用例很简单:片段 用户输入一些数据。它被传递给片段 B,用户输入更多数据。用户决定他们要返回片段 A 并编辑以前的数据,所以我想将包传回去,这样他们就不会丢失以前输入的数据。
使用导航组件,我可以在向后导航时简单地附加捆绑包,但使用此 OnBackPressCallback 我们不使用导航组件,因此没有任何东西可以附加捆绑包。
有没有人对此有任何潜在的简单解决方案?我已经考虑过 SharedPreferences 但是我正在传递一个对象,而 SP 只允许使用原始类型。
解决方案
最简单的解决方案是将您的 parcelable 序列化为 JSON 字符串,将其保存到共享首选项,然后在需要检索该数据时对其进行反序列化。
有 2 个知名且可靠的 JSON 库,如果您还没有使用或不熟悉它:您可以使用 Gson (Google) 或 Moshi (Square)
推荐阅读
- java - 如果我有下一个结构,如何从 Firebase 实时数据库中检索所有数据?
- sql - 如何使用窗口函数更新表中的列
- android - 我如何打印答案而不是发布请求的错误?
- javascript - 使用对象属性的值制作字符串的问题
- python - 部署到 Heroku 时,无法将保存的“.h5”检查点文件加载到 python 应用程序中
- c# - 使用 jwt 和许多角色进行基于角色的访问
- android - 如何使用 Scarlet 在 Android 上通过 WebSocket 进行连接?
- c# - 如何通过提供以冒号“:”分隔的键来在字典中检索和存储 JSON 数据
- java - 我只想将 GsonConverterFactory 用于 RequestBody
- angular - Angular 中的 ngx-logger 实现