2013-05-07 1 views
7

私は、ダイアログを表示して破壊するために、活動中にshowDialogdismissDialogを使用します。ダイアログを参照する変数を保持せずに、現在表示されているダイアログでクリックコマンドを発行する方法もありますか?AlertDialogのコードで「OK」をクリックする方法は?

たとえば、ダイアログの[OK] /ポジティブボタンをコードで入力したいとします。

+0

あなたはダイアログを設定するためにビルダーを使用していますか? – TronicZomB

+0

@TronicZomB:はい、私は 'Builder'を使っています。私は' Activity'で 'onCreateDialog'をオーバーライドしてダイアログを設定しています。 – Arci

+1

わかりました.BakriOnFireは、私が彼の答えに気付く前に、私が実際に投稿していたもののかなり良い例を持っています。それは、あなたのコードをモデル化したいと思うようなものです。 – TronicZomB

答えて

25

を:また

AlertDialog dialog = ... 
dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick(); 

、ダイアログへの参照を保持したくない場合はその設定を制御している、あなたは他の方法にクリックコードの抽出ができます

AlertDialog.Builder builder = ... 
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
    onPositiveButtonClicked(); 
    } 
}); 

と0を実装しますアクティビティのプログラムで[OK]ボタンをクリックする代わりにonPositiveButtonClicked()dismissDialog(id)と呼ぶことができます。複数のダイアログを処理する必要がある場合は、onPositiveButtonClickedidパラメータを設定します。

+0

ありがとう、私はBuilderを使用していて、 'getButton'メソッドはありません。実際のダイアログの参照を保持せずに[OK]ボタンをクリックする方法はありますか? – Arci

+2

ダイアログを参照できる場合、AlertDialogインスタンスはAlertDialog.Builder#show()によって返されます。それ以外の場合は、オンクリックロジックを別のメソッドに移動することは可能ですか?クリックをシミュレートする代わりに、オンクリックコードを実行してダイアログを閉じるだけで済みます。 –

+0

はい、 'AlertDialog'を返しますが、' AlertDialog'を参照する変数を保持したくありません。私はダイアログのIDを持っているので、 'Activity'を使ってダイアログにアクセスする方法はありますか? – Arci

-1

このお試しください: - 私はこのコードをテストしていませんが、それは動作するはず

AlertDialog.Builder alBuilder = new AlertDialog.Builder(this); 
     alBuilder 
       .setMessage("Do you wamt to exit?") 
       .setPositiveButton("Yes", 
         new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, 
            int which) { 
           dialog.cancel(); 
           // Write your code here for Yes 
          } 
         }) 
       .setNegativeButton("No", 
         new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, 
            int which) { 
           dialog.cancel(); 
           // Write your code here for No 
          } 
         }); 
     alBuilder.setCancelable(false); 
     alBuilder.show(); 
+0

ありがとう!しかし、私はあなたが私の質問を誤解していると思う。 – Arci

+0

私はあなたがほしいと思うことを理解できるように、urコードを投稿することができます。 – bakriOnFire

+0

私は 'activity.getActiveDialog(DIALOG_ID).getButton(...)performClick()'のようなものを探しています。 'activity.dismissDialog(DIALOG_ID)'と同様に、DIALOG_IDだけでダイアログを閉じることができます。 – Arci

4

私ははい、あなたはPOSITIVE BUTTONのインスタンスを取得することによってそれを行うと、それにperformClick()を呼び出すことができるコード

を経由して、ダイアログの「OK」/正のボタンを押します。それを試してみてください:

Button okButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); 
okButton.performClick(); //<<< click Button using code 
+0

ありがとう!しかし、私が変数に言及していないとどうなりますか? 'POSITIVE'ボタンに' Activity'だけを使ってアクセスする方法はありますか?( 'dismissDialog'と同じですか?) – Arci

関連する問題