在移动应用程序中,activity1 具有要填写的字段和一个按钮,通过单击该按钮可以转到 activity2 以选择某些数据。在activity2中接收到的数据必须传输到activity1。我使用 putExtra 执行此操作,但随后在 activity1 中清除所有其他先前填写的字段。有一个想法是让用于确认 activity2 中所选数据的按钮像“返回”按钮 ( onBackPressed();) 一样工作。实际上问题是如何在activity2中进行调用,onBackPressed();同时在activity1中使用putExtra传输数据?还是以其他方式解决了这个问题?
正如他们在评论中所说:
第二种选择更容易
而且你不保存数据,至少你不保存在 onSaveInstanceState 也不在 onCreate 或 onRestore 中恢复...
一般来说,你需要了解保存状态的基础知识阅读官方文档,它尽可能清晰
https://developer.android.com/guide/components/activities/activity-lifecycle#save-simple,-lightweight-ui-state-using-onsaveinstancestate
好吧,一个简单的选择是将数据从活动 1 传递给活动 2,然后将其返回给活动 1。为此,创建一个实现 Serializable 或 Parcelable 的容器类很方便。putExtra 支持两者。将您需要的所有内容写入此容器并恢复状态。不要忘记系统在被破坏时可能会失去意图。您需要覆盖 saveInstanceState 和 onRestoreInstanceState 方法。
Ps 要开始解析对象,通常用@Parcelize注解标记容器类并实现接口就足够了
一般来说,viewModel + viewState 用于保存状态。请务必查看或提出新问题。