在 App Inventor 2 中使用 ResultNotifier.ShowProgressDialog 的正确方法?
Proper way of using ResultNotifier.ShowProgressDialog in App Inventor 2?
扩展正在开发的应用程序的功能,我需要向用户显示一个进度通知对话框。问题是,我无法正确完成它。此外,我无法正确关闭此通知程序。尝试过将时钟和变量设置为例如“5000ms”再到“0”,没有任何缺失。
我需要实现的功能是:
一个。检查标签 "storeparsedData" 是否在 TinyDB 中,是否填充了获取的 JSON 数据。我按照我的 .
中的@Taifun 建议完成了这项工作
b。如果标签不存在(空列表),执行 getWeb.gotText 块以获取 JSON 数据(这是通过过程 "getWebData" 完成的)。这个功能正确,但需要一段时间大约 1 '35'' 或更多,因此需要向用户显示一些内容。
c。从 Web 获取 JSON 数据时,需要向用户显示 "ShowProgressDialog" 通知程序,这样我才能应对智能手机看似冻结的情况。
d.如果标签 "storeparseData" 填充了获取的 JSON 数据,请关闭通知程序。
试过以下编码,没有成功:
有人可以帮我在这个应用程序中实现这个功能吗?一个块代码或一些可以遵循和学习的东西,会很棒。
预先感谢大家的回答。
[编辑 1]
根据@Taifun 的建议,相关功能似乎可以正常工作,但存在问题。"ShowProgressDialog" 块永远不会触发,无论是在设备上还是在伴侣上。此外,块 "DismissProgressDialog" 应该附加到哪里以在收到 JSON 数据后禁用通知程序?
这是审查过的块代码,用于检查TinyDB中存储的标签。 "ShowProgressDialog" 永远不会像它应该的那样开火。对这个问题有什么建议吗?
这是获取 JSON 数据的 getWeb 函数的块代码:
请大家指教,如果applicable.Thank请加块码
- 您的
progressNotifier.AfterChoosing
事件永远不会触发,因为该事件仅在从 Notifier.ShowChooseDialog
块中选择某些内容后触发,而不是 Notifier.ShowMessageDialog
块。因此,请改用 Notifier.ShowChooseDialog
块并将该块中的第二个按钮设置为空字符串。
- 您的
while
循环将冻结您的应用程序,正如您已经意识到的那样... 您根本不需要 Clock.Timer
事件 来检查是否你的数据在那里。
就像这样:在 Web.GotText
事件中收到您的数据并将数据存储在 TinyDB
中,然后关闭进度对话框并显示消息 "Database is ready" .
更新:不要在 for each in list
循环中将列表存储 n 次,而应在 for each in list
循环完成后仅存储一次。 .. DismissProgressDialog
和 ShowAlert
块相同...
该连接块的用途是什么?您可能想要删除它...
扩展正在开发的应用程序的功能,我需要向用户显示一个进度通知对话框。问题是,我无法正确完成它。此外,我无法正确关闭此通知程序。尝试过将时钟和变量设置为例如“5000ms”再到“0”,没有任何缺失。
我需要实现的功能是:
一个。检查标签 "storeparsedData" 是否在 TinyDB 中,是否填充了获取的 JSON 数据。我按照我的
b。如果标签不存在(空列表),执行 getWeb.gotText 块以获取 JSON 数据(这是通过过程 "getWebData" 完成的)。这个功能正确,但需要一段时间大约 1 '35'' 或更多,因此需要向用户显示一些内容。
c。从 Web 获取 JSON 数据时,需要向用户显示 "ShowProgressDialog" 通知程序,这样我才能应对智能手机看似冻结的情况。
d.如果标签 "storeparseData" 填充了获取的 JSON 数据,请关闭通知程序。
试过以下编码,没有成功:
有人可以帮我在这个应用程序中实现这个功能吗?一个块代码或一些可以遵循和学习的东西,会很棒。 预先感谢大家的回答。
[编辑 1]
根据@Taifun 的建议,相关功能似乎可以正常工作,但存在问题。"ShowProgressDialog" 块永远不会触发,无论是在设备上还是在伴侣上。此外,块 "DismissProgressDialog" 应该附加到哪里以在收到 JSON 数据后禁用通知程序?
这是审查过的块代码,用于检查TinyDB中存储的标签。 "ShowProgressDialog" 永远不会像它应该的那样开火。对这个问题有什么建议吗?
这是获取 JSON 数据的 getWeb 函数的块代码:
请大家指教,如果applicable.Thank请加块码
- 您的
progressNotifier.AfterChoosing
事件永远不会触发,因为该事件仅在从Notifier.ShowChooseDialog
块中选择某些内容后触发,而不是Notifier.ShowMessageDialog
块。因此,请改用Notifier.ShowChooseDialog
块并将该块中的第二个按钮设置为空字符串。
- 您的
while
循环将冻结您的应用程序,正如您已经意识到的那样... 您根本不需要Clock.Timer
事件 来检查是否你的数据在那里。
就像这样:在 Web.GotText
事件中收到您的数据并将数据存储在 TinyDB
中,然后关闭进度对话框并显示消息 "Database is ready" .
更新:不要在 for each in list
循环中将列表存储 n 次,而应在 for each in list
循环完成后仅存储一次。 .. DismissProgressDialog
和 ShowAlert
块相同...
该连接块的用途是什么?您可能想要删除它...