8

Android ゲームを開発しています。このゲームでは、電車が走る線路があります。これは実行中のスレッドです。衝突したときに警告ダイアログを表示したい。エラーを示す警告ダイアログを適用すると、呼び出されていないスレッド内にハンドラーを作成できませんlooper.prepare()

4

6 に答える 6

15

これはあなたを助けるでしょう:

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        // Your dialog code.
    }
});
于 2012-09-13T06:33:24.250 に答える
11

AlertDialogUI スレッド内で作成する必要があります。そうしないと機能しません。別のスレッドを使用している場合、MessageHandlerまたはrunOnUiThread(runnable を使用して) 使用して内部にダイアログを作成することができます。

于 2012-09-13T06:32:47.433 に答える
7

ハンドラーを使用してこの作業を行うことができます。

Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable() {
    @Override
    public void run() {
        // Your UI updates here
    }
});
于 2012-09-13T06:36:53.220 に答える
6

Activity クラスでハンドラーを作成し、そのハンドラー オブジェクトに対して sendMessage を呼び出すことができます。Handler の handleMessage メソッドにアラートを表示するコードを記述します。例:

活動クラス

Handler mHandler = new Handler()
{
    public void handleMessage(Message msg)
    {
       //Display Alert
    }
};

//Thread

Thread thread= new Thread()
{
    public void run()
    {
         //Logic
         MHandler.sendEmptyMessage(0);
    }
}
于 2012-09-13T06:41:48.693 に答える
2

以下のようにUIスレッドでダイアログを表示する必要があります

runOnUiThread(new Runnable() {
                @Override
                public void run() {
                // Your dialog code.
                }
            });
于 2012-09-13T06:31:49.590 に答える