これは、以下のAPIレベル10とのためにされています
まずあなたはActivityクラスにonCreateDialog(int型のID、バンドル引数)をオーバーライドする必要があり、何をやっていることはありますか?ダイアログは常にアクティビティの一部として作成され、表示されます。第二に、onCreateDialogが呼び出されたときに実際に作成されていないため、onCreateDialogでダイアログをキャンセル/却棄することはできないと思います。つまり、作成されていないものをキャンセル/却下することはできません。あなたが試みることができるのは、代わりにonPrepareDialog()をオーバーライドし、そのダイアログをキャンセル/却下するためのチェックを行います。その時点で、ダイアログは実際に作成されている(表示されていない)ため、キャンセル/却棄を呼び出すと表示されないようにすることができます。
onPrepareDialog()は、表示されようとしているダイアログのチェックと意思決定を行うための適切な場所です。これはHoneycomb以前のAPI用です。
これは、APIの11以降である:
後で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()が実際に呼び出される必要がある場合にのみ呼び出されるようなコードを記述します。私は正確に何をしようとしているのかについてさらに詳しく知る必要があります。たとえば、Dialogを呼び出したとします。ボタンのonClickListenerからshow()を呼び出します。あなたは本当にユーザーがボタンを押してダイアログを期待したくないが、ユーザーが理解できない何らかの理由で表示されないようにしたい。より良い解決策は、ボタンを一括して無効にすることで、アプリケーション内の他の機能のためにこの機能が利用できないことはユーザーには明らかです。
onCreate()メソッドでsuper.onCreate()を呼び出していますか? – RaphMclee
これはどのAPIレベルですか? –