如何在Android中保存表单时判断表单数据是否发生改变

3

我创建了一个用于注册员工的应用程序。有多个表单需要填写并保存到数据库中,每个表单页面都有取消和保存按钮。在用户编辑表单并点击取消按钮时,我想要弹出警告信息“您将丢失您的更改”。使用Servlet和JSP,我可以知道表单的更改情况,但我不知道如何在Android中实现。请帮助我吧。

谢谢。

2个回答

4
在我们的Flex应用程序中解决这个问题的方法是,在页面中保留一个全局变量,并添加一个监听器以便在表单中的任何内容被更改时设置变量为true。
然后,当点击取消时,如果该值为true,则会显示弹出窗口,指示存在未保存的更改。如果需要其他信息,请告诉我。

谢谢Silverback,但是我所有的34个表单都包含超过50个组件,如复选框、微调器和单选按钮。我应该为所有组件编写监听器吗?除此之外还有其他方法吗? - VENKI.B
2
我猜不是所有的控件都可以这样做,你可以尝试为按钮添加onItemListener,为下拉框添加onItemSelectedListener等监听器。当进入这些监听器时,它已经点击了某些东西,所以你可以说用户已经编辑了某些内容,在此监听器中设置一个全局布尔变量为true,并继续进行操作。因此,最后,你拥有的不同类型的小部件数量(按钮、下拉框等)就有多少个监听器。例如,5个下拉框将有一个共同的onItemSelectedListener,7个复选框将有一个共同的onCheckedChangedListener。 - Vedang Jadhav
一切都很好,但是如何处理表单中的日期选择器呢?我必须检查字段中的日期何时更改,而不是在单击日期图标时。我的一些表单包含超过10个日期选择器图标。 - VENKI.B
有时候会发生更改,但用户可能决定撤销更改。如果我们在所有提到的监听器中将变量设置为true,那么我们就会得到错误的值来检测是否发生了任何更改。该变量称为更改已发生,但实际上我们知道没有发生更改。您有什么想法如何解决这个问题吗?@VedangJadhav - Nava
我们需要保留一个变量来存储初始值,并将其与当前值进行比较,以确定字段是否已更改。 - midhunhk

0

我认为在安卓中,当用户点击取消按钮时,你将需要编写自己的自定义验证。


谢谢Roy James Schumacher,关于自定义验证,如何检查表单中的更改。我的表单包含50多个组件。 - VENKI.B
可能在有这么多组件的情况下,最有效的方法是使用Silverback的解决方案,并为每个组件添加监听器。 - Roy James Schumacher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接