扩展开发中应用程序的功能,我需要向用户显示进度通知对话框。问题是,我做不正确。此外,我无法正确关闭此通知程序。尝试使用时钟并将变量设置为例如“ 5000ms”,然后到“ 0”,没有任何不足。

我需要实现以下功能:

一种。检查标签“ storeparsedData”是否在TinyDB中,并用获取的JSON数据填充。我已经按照我的relative question中的@Taifun建议进行了此操作。

b。如果标签不存在(空列表),请执行getWeb.gotText块以获取JSON数据(此过程可通过“ getWebData”过程完成。此功能正常,但大约需要1'35''或更长的时间,因此需要向用户展示一些东西。

C。在从网络获取JSON数据时,需要向用户显示“ ShowProgressDialog”通知程序,因此我可以应对智能手机似乎冻结的情况。

d。如果使用已获取的JSON数据填充标签“ storeparseData”,请关闭通知程序。

尝试了以下编码,但未取得成功:

android - 在App Inventor 2中使用ResultNotifier.ShowProgressDialog的正确方法?-LMLPHP

有人可以帮我实现此应用程序中的此功能吗?块代码或要遵循和学习的东西会很棒。
预先感谢大家的回答。

[Edit1]

在@Taifun建议之后,有问题的功能似乎正在运行,但是存在问题。“ ShowProgressDialog”块从不触发,无论是在设备上还是在同伴上。另外,应在何处附加块“ DismissProgressDialog”以在收到JSON数据时禁用通知程序?

这是审阅的块代码,用于检查TinyDB中存储的标签。 “ ShowProgressDialog”永远不会触发。关于这个问题有什么建议吗?

android - 在App Inventor 2中使用ResultNotifier.ShowProgressDialog的正确方法?-LMLPHP

这是getWeb函数获取JSON数据的代码块:

android - 在App Inventor 2中使用ResultNotifier.ShowProgressDialog的正确方法?-LMLPHP

请告知您,并提供阻止代码。谢谢。

最佳答案

您的progressNotifier.AfterChoosing事件永远不会触发,因为该事件仅在从Notifier.ShowChooseDialog块中选择某项后才会触发,而对于Notifier.ShowMessageDialog块则不会。因此,请使用Notifier.ShowChooseDialog块,并将该块中的第二个按钮设置为空字符串。


android - 在App Inventor 2中使用ResultNotifier.ShowProgressDialog的正确方法?-LMLPHP


正如您已经意识到的那样,您的while循环将冻结您的应用程序...您根本不需要Clock.Timer事件来检查数据是否存在。


就是这样:在Web.GotText事件中接收到数据并将数据存储在TinyDB中之后,关闭进度对话框并显示消息“数据库已准备就绪”。

android - 在App Inventor 2中使用ResultNotifier.ShowProgressDialog的正确方法?-LMLPHP

更新:列表不应该在for each in list循环中存储n次,而应该在for each in list循环完成后仅将其存储一次。

android - 在App Inventor 2中使用ResultNotifier.ShowProgressDialog的正确方法?-LMLPHP

该连接块的目的是什么?您可能要删除它...

09-25 21:41