1

開発中のアプリの機能を拡張するために、進行状況通知ダイアログをユーザーに表示する必要があります。問題は、それを正しく行うことができないことです。さらに、この通知機能を適切に閉じることができません。時計と変数をたとえば「5000ms」に設定してから「0」に設定してみましたが、不足はありませんでした。

私が達成する必要があるのは、次の機能です。

a. タグ「storeparsedData」が TinyDB にあり、フェッチされた JSON データが入力されているかどうかを確認します。私の相対的な質問で@Taifunのアドバイスに従って、これを行いました。

b. タグがそこにない場合 (空のリスト)、getWeb.gotText ブロックを実行して JSON データを取得します (これはプロシージャ "getWebData" で行われます)。ユーザーに何かを表示する必要があります。

c. Web から JSON データをフェッチしているときに、「ShowProgressDialog」通知機能をユーザーに表示する必要があるため、一見フリーズしているように見えるスマートフォンに対処できます。

d. タグ「storeparseData」にフェッチされた JSON データが入力されている場合は、ノーティファイアを閉じます。

関連する成功なしで、次のコーディングを試しました:

ここに画像の説明を入力

このアプリでこの機能を実現するために、誰かが私を助けてくれますか? ブロック コードや、従うべきものや学ぶべきものは素晴らしいものになるでしょう。ご回答いただきありがとうございます。

[編集1]

@Taifun の提案の後、問題の機能は機能しているように見えますが、問題があります。「ShowProgressDialog」ブロックは、デバイスでもコンパニオンでも起動しません。また、JSON データを受信したときにノーティファイアを無効にするために、ブロック「DismissProgressDialog」をどこにアタッチする必要がありますか?

TinyDB に保存されたタグをチェックするための、レビュー済みのブロック コードを次に示します。「ShowProgressDialog」は本来のように起動しません。この問題に関する提案はありますか?

ここに画像の説明を入力

以下は、JSON データを取得するための getWeb 関数のブロック コードです。

ここに画像の説明を入力

該当する場合はブロックコードを添えてアドバイスしてください。ありがとうございました。

4

1 に答える 1

1
  1. そのイベントはブロックから何かを選択した後にのみ発生し、ブロックに対してはprogressNotifier.AfterChoosing発生しないため、イベントは決して発生しません。したがって、代わりにブロックを使用し、そのブロックの 2 番目のボタンを空の文字列に設定します。Notifier.ShowChooseDialogNotifier.ShowMessageDialogNotifier.ShowChooseDialog

ここに画像の説明を入力

  1. whileすでに気づいているように、ループはアプリをフリーズさせます...データが存在するかどうかを確認するためにイベントはまったく必要ありませんClock.Timer

Web.GotText次のようにしてください。イベントでデータを受け取り、データを に保存したTinyDB後、進行状況ダイアログを閉じて、「データベースの準備ができました」というメッセージを表示します。

ここに画像の説明を入力

更新: ループ内でリストを n 回保存する代わりにfor each in list、ループが終了した後に一度だけ保存する必要があります... andブロックfor each in listについても同じです...DismissProgressDialogShowAlert

ここに画像の説明を入力

その結合ブロックの目的は何ですか? あなたはそれを削除したいかもしれません...

于 2016-01-14T20:01:12.497 に答える