问题描述
在我的应用程序中,我使用OnBackpressedCallback并调用findNavController.popBackStack来管理向后导航。我遇到的一个局限性是,当用户单击“后退”按钮时,我找不到一种将可包裹捆送回的方法。
用例很简单:片段用户输入一些数据。用户输入了更多数据后,将其传递给FragmentB。用户决定他们要返回到片段A并编辑以前的数据,因此我想将数据包传回,这样他们就不会丢失以前输入的数据。
使用导航组件,我可以在向后导航时简单地附加捆绑软件,但是使用此OnBackPressCallback,我们不使用导航组件,因此没有附加捆绑软件的东西。
有人对此有任何潜在的简单解决方案吗?我已经考虑过SharedPreferences,但是我正在传递一个对象,而SP只允许使用基元。
解决方法
最简单的解决方案是将可包裹包裹序列化为JSON字符串,将其保存到共享首选项,然后在需要检索该数据时将其反序列化。
如果您尚未使用一个或不熟悉的库,则有2个众所周知且可靠的JSON库:您可以使用Gson(Google)或Moshi(Square)