【发布时间】:2017-04-23 22:13:05
【问题描述】:
我尝试开发“预订”应用程序。 这意味着:当用户单击“预订”按钮时,它将作为总预订的“+1”添加到数据库中。但是,当同一用户单击“取消保留”时,它会从数据库中减去“-1”。但问题是它只有在打开互联网连接时才能正常工作。
在第二种情况下,当互联网关闭并且用户单击“保留”时,它在数据库中显示“1”(打开互联网后)->这意味着它不会向数据库添加值,而只是用这个“1”替换”。
所以:
(在线)
数据库:“9” -> 单击“保留”值正在增加“+1”。
“预留”后的数据库:“10”
“取消保留”后的数据库:“9”。
当用户在互联网关闭时尝试预订时,它看起来像:
(离线)
数据库:“9”->单击“保留”值将替换为“+1”。
打开互联网后的数据库“保留”:“1”
“取消保留”后的数据库:“-1”
要正确解决这种情况,我是否应该将“按钮”设置为仅在打开互联网连接时才起作用?这是解决此问题的最简单方法吗?
我阅读了有关 onDisconnect() 方法的信息,但我没有看到任何情况下如何将 firebase 设置为仅在用户在线且没有任何内容的情况下工作
如果有人能给我一个提示,我将不胜感激我应该如何实施以解决任何问题。
【问题讨论】:
-
只有当用户在线时,预订等功能才能正常工作,不是吗?如果用户离线,让用户单击按钮但显示 toast、snackbar 或对话框,说明用户需要连接到 Internet 才能使用此功能。希望这有帮助:)
-
@YeMinHtut 我想过,但它并没有解决这个问题。因为即使用户看到这个对话框,他也可能不小心点击了这个按钮,这会以错误的方式改变数据库中的值。我正在寻找的解决方案是如何在用户离线时禁用此按钮或其他功能以防止修改数据。
-
@YeMinHtut 答案是正确的。当用户点击预订按钮时,您要做的第一件事是检查用户是否连接到互联网。 (这里是检查设备是否连接到互联网的 sn-p - stackoverflow.com/questions/32547006/…)。如果是,则仅处理保留方法。否则,请他干杯!
-
@NishanthSreedhara 您的解决方案有效,先生 :) 但是您能告诉我我可以在您的代码中设置什么吗,因为当我打开互联网时,在重新加载活动后我仍然无法单击“保留”再次使用这些片段(您的代码在片段类中使用)我可以做到这一点。有没有其他方法可以设置,当自动打开互联网时,我可以立即点击“预订”?感谢您的帮助!
标签: android firebase firebase-realtime-database