0

アプリケーションにカスタムダイアログを表示していますが、このダイアログは短時間(たとえば、2秒)留まり、その後消えます。このカスタムダイアログをメインアクティビティから呼び出しています。カスタムダイアログが消えるまで通話アクティビティを一時停止したい。問題は、ダイアログが表示されている間、ダイアログが閉じられたのアクティビティコードが常に実行されることです。

ダイアログを表示して2秒間スリープしてから閉じてみましたが、機能していません。ダイアログが閉じられた後のアクティビティコードが実行されています。

cust_dlg.show();
Thread.sleep(2000);
cust_dlg.dismiss();

また、ダイアログをタイマータスクに入れてみましたが、これも失敗します

        final Timer t = new Timer();
        cust_dlg.show();
        t.schedule(new TimerTask() {
        public void run() {
        cust_dlg.dismiss();
        t.cancel();
        }
        }, 500);

また、スレッド内のカスタムダイアログを使用して単純なスレッド化を試み、メインアクティビティで同時にスリープ状態にしました。これにより、例外が発生し、強制終了されます。

カスタムダイアログが表示されている間、メインアクティビティを一時停止して、カスタムダイアログを閉じた後のコードが実行されないようにする方法を教えてください。

ありがとう

4

1 に答える 1

0

ハンドラーを試す

        Handler handler = new Handler(); 
        handler.postDelayed(new Runnable() { 
             public void run() { 


        AlertDialog.Builder builder = new AlertDialog.Builder(RBLQuizSpiel.this);
        if (aktuellGeloest == true){

        builder.setMessage(R.string.quiz_neu)
                .setTitle(R.string.quiz_glueckwunsch)
                .setPositiveButton(R.string.quiz_ja, dialogClickListener)
                .setNegativeButton(R.string.quiz_nein, dialogClickListener).show();
        } else {
            builder.setMessage(R.string.quiz_neu)
            .setTitle(R.string.quiz_schade)
            .setPositiveButton(R.string.quiz_ja, dialogClickListener)
            .setNegativeButton(R.string.quiz_nein, dialogClickListener).show();

        }
        }
}, 1500);

この背後にあるコードはもうありません。

1500=ミリ秒

Clicklistnerで次のコードの実行を設定する必要があります。Androidはイベント駆動型OSです。ダイアログがメッセージキューに入れられ、プログラムがステップオンします。

于 2012-01-31T07:11:36.207 に答える