我有编程经验,但在 Android 方面的经验不多。 我认为,在任何平台上,我们都不能让用户不离开屏幕 数据已保存。我们还必须确保数据在保存之前是正确的。
在 Android 中,我找不到使用 Fragments 实现这种情况的有效方法
让我们考虑一个包含 1 个名为 A1 的 Activity 的应用程序,它控制 3 个 fragment F1、F2 和 F3。
通过 NavigationDrawer 访问 F1 和 F2。
当用户要在数据库中输入数据时,F2 会调用 F3。 F3 有几个 EditTexts 和其他 View ,所以不提醒就离开 F3 不是个好主意 用户可能会失去一切。
在工具栏中有一个菜单项可以让用户保存数据并返回到 F2。
我想控制后退按钮以防止用户忘记保存数据 或者如果您有任何信息错误,我有办法向用户发送消息 (Toast) 数据。
通过仅使用 Activity 来执行此操作是可能的,但这不是解决方案,因为我正在使用 NavigationDrawer。
据我所知,onBackPressed是一个Activity回调,不会被Fragment拦截。
简而言之:
我想留在 Fragment F3 中,直到用户更正所有错误并保存数据。的情况下 他/她在没有保存的情况下点击后退按钮,将向他/她发送一个 AlertDialog。
有人做过这样的事吗?在 Android 中实现数据一致性的最佳实践是什么?
在此先感谢您的帮助。
最佳答案
最佳做法是在用户离开该屏幕时保存数据,无论数据是否通过验证。这可能意味着您必须以特殊方式将其保存为不完整的表格或记录。
然后,为用户提供一个按钮(例如“完成”操作按钮)以最终确认表单输入已完成。此时验证数据。如果您不这样做,并且按照您的建议删除了不完整的数据,用户将无法切换到另一个应用来查找他们可能需要在表单中输入的数据。
Gmail 应用程序就是一个很好的例子。如果您正在撰写电子邮件并离开该屏幕(例如查看一些其他数据),它不会警告您它将丢失您的数据,它只是将您的电子邮件保存为草稿。即使您的电子邮件缺少强制性数据(收件人地址),也会发生这种情况。您可以根据需要来回切换多次,直到电子邮件完成。
您不需要专门 Hook 后退按钮来执行此操作:您只需将数据保存在 onPause
中,并可能 Toast
用户安抚他们你已经做到了。 “提交”数据(发送电子邮件或应用表单更改)应该删除草稿数据,这只是一个普通按钮 onClick
。
自从 Android 开发者网站上的“设计”页面转移到“ Material 设计”页面后,他们似乎不再有用户体验提示,但是 "Never lose my stuff" used to be one of the key principles .我还找到了the Gmail example in the WayBackMachine's archive of the design pages .
关于android - 控制 fragment 内的后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35043469/