首页 > 解决方案 > 使用 OnBackPressedCallback 向后传递可打包的捆绑包

问题描述

在我的应用程序中,我使用 OnBackPressedCallback 并调用 findNavController.popBackStack 来管理向后导航。我遇到的一个限制是,当用户单击后退按钮时,我找不到将可打包捆绑包传回的方法。

用例很简单:片段 用户输入一些数据。它被传递给片段 B,用户输入更多数据。用户决定他们要返回片段 A 并编辑以前的数据,所以我想将包传回去,这样他们就不会丢失以前输入的数据。

使用导航组件,我可以在向后导航时简单地附加捆绑包,但使用此 OnBackPressCallback 我们不使用导航组件,因此没有任何东西可以附加捆绑包。

有没有人对此有任何潜在的简单解决方案?我已经考虑过 SharedPreferences 但是我正在传递一个对象,而 SP 只允许使用原始类型。

标签: androidandroid-fragmentsandroid-navigationandroid-bundle

解决方案


最简单的解决方案是将您的 parcelable 序列化为 JSON 字符串,将其保存到共享首选项,然后在需要检索该数据时对其进行反序列化。

有 2 个知名且可靠的 JSON 库,如果您还没有使用或不熟悉它:您可以使用 Gson (Google) 或 Moshi (Square)


推荐阅读