【问题标题】:Proper way of using ResultNotifier.ShowProgressDialog in App Inventor 2?在 App Inventor 2 中使用 ResultNotifier.ShowProgressDialog 的正确方法?
【发布时间】:2016-01-14 02:41:24
【问题描述】:

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

我需要实现的是以下功能:

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

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

c。在从 web 获取 JSON 数据时,需要向用户显示“ShowProgressDialog”通知,这样我就可以应对智能手机看似冻结的情况。

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

尝试过以下编码,均未成功:

有人可以帮我在这个应用程序中实现这个功能吗?一个块代码或一些可以遵循和学习的东西,会很棒。 提前感谢大家的回答。

[编辑1]

在@Taifun 建议之后,有问题的功能似乎可以正常工作,但有一个问题。“ShowProgressDialog”块永远不会触发,无论是在设备上还是在伴侣上。此外,在收到 JSON 数据时,应在哪里附加阻止“DismissProgressDialog”以禁用通知器?

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

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

请告知,如果适用,请提供块代码。谢谢大家。

【问题讨论】:

    标签: android json progressdialog app-inventor tinydb


    【解决方案1】:
    1. 您的progressNotifier.AfterChoosing 事件永远不会触发,因为该事件仅在从Notifier.ShowChooseDialog 块中选择某些内容后才会触发,而不是Notifier.ShowMessageDialog 块。因此,请改用Notifier.ShowChooseDialog 块并将该块中的第二个按钮设置为空字符串。

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

    只需这样做:在Web.GotText 事件中收到您的数据并将数据存储在TinyDB 中之后,然后关闭进度对话框并显示消息“数据库已准备好”。

    更新:不要在for each in list 循环中存储您的列表n 次,而应在for each in list 循环完成后仅存储一次...对于DismissProgressDialog 和ShowAlert块...

    那个连接块的目的是什么?您可能想删除它.​​..

    【讨论】:

    • 泰丰您好。我快要搞定它了,但是您的建议确实可以解决该功能,但是“ ShowProgressDialog”存在问题,因为它不会触发。如果您可能提供更多帮助,请参阅我的编辑。
    • 泰丰你好。是的,列表项功能存在无限循环,我让应用程序运行缓慢。您对“DismissProgressDialog”的建议也被考虑在内。我会报告任何其他问题。就目前而言,你的答案就是我问题的正确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多