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

时间:2016-01-14 02:41:25

标签: android json progressdialog app-inventor tinydb

扩展开发应用程序的功能,我需要向用户显示进度通知对话框。问题是,我无法正确完成。此外,我无法正确解雇这个通知者。尝试过将时钟和变量设置为例如“5000ms”再到“0”,毫不逊色。

我需要实现以下功能:

一个。检查标签“storeparsedData”是否在TinyDB中,填充了获取的JSON数据。我完成了这项工作,在我relative question的@Taifun建议之后。

湾如果标签不在那里(空列表),请执行getWeb.gotText块以获取JSON数据(这是通过过程“getWebData”完成的。这样功能正常,但需要大约1'35''或更多,所以需要向用户展示一些东西。

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

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

尝试了以下编码,没有取得相关成功:

enter image description here

有人可以帮助我,在这个应用程序中实现此功能吗?块代码或要遵循和学习的东西将是非常棒的。 提前感谢大家的答案。

[EDIT1]

在@Taifun建议之后,有问题的功能似乎有效,但是有一个问题。“ShowProgressDialog”块永远不会在设备或伴侣上触发。在收到JSON数据时,应该将块“DismissProgressDialog”附加到禁用通知程序的位置吗?

以下是已审核的块代码,用于检查TinyDB中存储的标记。 “ShowProgressDialog”永远不会发射它。这个问题有什么建议吗?

enter image description here

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

enter image description here

如果适用,请通过区号提出建议。谢谢大家。

1 个答案:

答案 0 :(得分:1)

  1. 您的progressNotifier.AfterChoosing事件永远不会触发,因为该事件仅在从Notifier.ShowChooseDialog块中选择某些内容后触发,而不是针对Notifier.ShowMessageDialog块触发。因此,请改用Notifier.ShowChooseDialog块,并将该块中的第二个按钮设置为空字符串。
  2. enter image description here

    1. 您的while循环会冻结您的应用,因为您已经意识到... 您根本不需要Clock.Timer事件来检查您的数据是否存在。
    2. 就这样做:在Web.GotText事件中收到您的数据并将数据存储在TinyDB后,然后关闭进度对话框并显示消息"数据库已准备好& #34;

      enter image description here

      更新:不是将列表存储在for each in list循环内n次,而是应该在for each in list循环完成后只存储一次...相同的DismissProgressDialogShowAlert阻止了......

      enter image description here

      该连接块的目的是什么?你可能想删除它.​​.....