2010-11-27 18 views
8

私はAndroidアプリを開発しています。Androidアラートダイアログ - 押した後に[OK]ボタンを隠す方法

私は、ユーザーがそれを押した後にOKボタンを隠したいと思っています。計算が行われている間、ダイアログウィンドウは数秒間フォアグラウンドに留まります。

これはコードです:

new AlertDialog.Builder(this) 
    .setMessage("This may take a while") 
    .setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {     
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
         // hide the OK button - how? 
         // a lot of computation 
     } 
    }) 
    .show(); 

どのように私はそれを達成することができますか?

P .:私は計算を扱うための高度な技術(進行状況ダイアログ、マルチスレッドなど)に興味がありません。

ありがとうございました。

+6

UIスレッドで長時間の計算を行う場合は、アプリケーションがアプリケーションにエラーを返さないようにするときに、多くの否定的なフィードバックをユーザーに提供してください。 – adamp

+1

"アプリケーションが応答しない"というエラーを防ぐには、計算を['AsyncTask'](http://developer.android.com/reference/android/os/AsyncTask.html)で実行する必要があります。 – sulai

答えて

19
.setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     ((AlertDialog)dialog).getButton(which).setVisibility(View.INVISIBLE); 
     // the rest of your stuff 
    } 
}) 
+2

しかし、あなたのデザインはこの部分で完璧ではないようです。おそらく 'AsyncTask'と' ProgressDialog'を併用するほうが良いでしょう。 AsyncTaskはバックグラウンドスレッドで長い計算を実行できるため、メインUIスレッドはブロックされず、したがってアプリケーションはANRを取得しません。 –

+0

ボタンを無効にする方法は、ダイアログバーのテキストフィールドによって異なりますか? – akd

+0

@akdurmus:方法があるはずですが、これについて新しい質問をしてください。 –

-3

ボタンの表示を非表示に設定できます。 dialogDialogInterfaceある

ok.setVisibility(View.INVISIBLE); 
+4

しかし、どうすれば 'ok'変数を取得できますか? – dan

0
setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     dialog.dismiss(); 

関連する問題