1

ProgressDialog を自分のアプリに入れようとして問題が発生しています。私の GameEngine クラス (何も拡張しない) には、以下に示すコードがあります。最初の行は実行時例外を生成します。ほぼ同じエラーのように見えるこのスレッドに出くわしましたが、Android TimerTask throws RuntimeException if Show ProgressDialog が run()に追加されている場合、ソリューションを実装する方法がよくわかりません。どんな助けでも大歓迎です、ありがとう。

    //Create ProgressDialog
    ProgressDialog dialog = ProgressDialog.show(context, "", 
            "Loading...", true);

    //Set Clusters before level starts
    for (int i = 0; i < 80; i++)
    {
        updateBacteria();
        updateAttraction();
        checkCollisions();
        moveObjectsAwayFromWalls();
    }

    dialog.dismiss();
4

2 に答える 2

2

UI スレッド (Activity を拡張するメイン クラス) でのみダイアログを表示できます。これを行うには、 を記述し、Handlerそれを使用して非 UI スレッドから UI スレッドにメッセージを送信します。Android のProgressDialog の例には、この例があります。「2 番目のスレッドを使用した ProgressDialog の例」の下にあるコードのスニペットを参照してください。

ハンドラーはより堅牢なアプローチですが、提供したリンクの回答に書かれているのと同じ方法に従うこともできます。

于 2011-03-20T01:26:33.787 に答える
1

このメソッドがメイン アクティビティ スレッドで実行されていない場合は、変更する必要があります。どうやって?メイン アクティビティで Handler を設定し、それをスレッドに渡します (上記)。ハンドラーでは、メソッドの GUI 関連部分 (つまりProgressDialog) を実装する必要があります。を表示する必要がある場合はProgressDialog、処理を続けるよりも and を呼び出すだけHandlerです (この場合はループ)。についても同じですdismiss()

于 2011-03-20T01:22:25.600 に答える