これは、APIレベル10以下の場合です。
まず、ActivityクラスのonCreateDialog(int id、Bundle args)をオーバーライドする必要がありますが、それはあなたがしていることですか?ダイアログは常にアクティビティの一部として作成および表示されます。次に、onCreateDialogが呼び出されたときに実際には作成されていないため、onCreateDialogのダイアログをキャンセル/閉じることはできないと思います。つまり、作成されていないものをキャンセル/却下することはできません。代わりにonPrepareDialog()をオーバーライドし、チェックを行ってそこでダイアログをキャンセル/閉じることを試すことができます。その時点で、ダイアログは実際に作成されているはずです(表示されていないだけです)。そこでcancel / dismissを呼び出すと、ダイアログが表示されないようにすることができます。
onPrepareDialog()は、表示されようとしているダイアログであらゆる種類のチェックと意思決定を行うための適切な場所です。これは、Honeycombより前のAPI用です。
これはAPI11以降用です。
それ以降のAPIを使用している場合は、代わりにDialogFragmentを拡張する必要があります。この場合、onPrepareDialog()と同様のDialogFragmentのonCreateView()メソッドで意思決定を処理できると思います。
これをお読みいただければ幸いです:http:
//developer.android.com/guide/topics/ui/dialogs.html
またはこれ、APIに応じて:
http://developer.android.com/reference/android/app/DialogFragment.html
全体として、おそらくよりクリーンな解決策は、ダイアログが最初に表示される原因となるボタンまたはメカニズムを無効にすることですか?つまり、Dialog.show()が本当に呼び出される必要がある場合にのみ呼び出されるようにコードを記述します。私はあなたが何をしようとしているのかについてもっと詳しく知る必要があるでしょう。たとえば、ボタンのonClickListenerからDialog.show()を呼び出したとします。ユーザーにボタンを押してダイアログを期待させたくはありませんが、ユーザーが理解できない何らかの理由でダイアログが表示されないようにします。より良い解決策は、ボタンをすべて一緒に無効にして、アプリケーション内の他の何かのためにこの機能が使用できないことをユーザーに明らかにすることです。