Androidでダイアログが却下またはキャンセルされることの違いは何ですか?


193

タイトルが言うように、Androidでダイアログが却下またはキャンセルされることの違いは何ですか?

回答:


187

通常、ダイアログは、そのジョブが完了して画面から削除されるときに閉じられます。ユーザーがダイアログをエスケープして[戻る]ボタンを押すと、ダイアログがキャンセルされます。

たとえば、画面に標準の[はい/いいえ]ダイアログがあります。ユーザーが[いいえ]をクリックすると、ダイアログが閉じて、[いいえ]の値が呼び出し元に返されます。[はい]または[いいえ]を選択する代わりに、ユーザーが[戻る]をクリックして選択を行うのではなくダイアログをエスケープすると、ダイアログはキャンセルされ、値は呼び出し元に返されません。


返信いただきありがとうございます。ユーザーが日付ピッカーのキャンセルボタンを押すとどうなるかを設定しようとしています。最初に、dismissリスナーを使用してみましたが、うまくいきましたが、ユーザーが時間を選択した場合にも起こりました。次に、キャンセルリスナーを試してみましたが、キャンセルを押しても、リスナーはオフになりませんでした。私が何をすべきか知っていますか?
Aal

2
DatePickerDialogを使用している場合は、OnDateSetListenerを使用して日付が変更されたときに通知を受ける必要があります。誰かがキャンセルボタンをクリックすると...それは呼び出されず、ダイアログはそれ自体で消えます。DatePickerDialogの通常の使用では、他のリスナーを設定する必要はありません。
Lee

ちなみに、戻るボタンはキャンセルリスナーと却下リスナーの両方をトリガーします。
アーバン

28

dismissコードで明示的に呼び出す必要があるもので、通常はのボタンのクリックイベントに応答しますDialog。必要に応じdismissDialogActivity、を呼び出すと、が呼び出さdismissれますDialog

このcancelメソッドは、コードで明示的に呼び出されたとき、またはキャンセル可能Dialogオブジェクトが開いているときにユーザーが[戻る]ボタンを押したときにのみ実行されます(@Leeが指摘したとおり)。

を使用しDatePickerている場合でも、これはすべて当てはまります。@Leeが言ったようDatePickerDialog.OnDateSetListenerに、ユーザーがから日付を選択したことを検出するだけDatePickerです。

Androidデベロッパーのリファレンスは、詳細を提供Dialog秒。


cancelメソッドを呼び出すこともできます。破棄とキャンセルには2つの異なるリスナーがあります。
creativecreatoror'18年

12

Dismissdismissを呼び出すと、ダイアログが画面から削除されます。このメソッドは、任意のスレッドから安全に呼び出すことができます。ダイアログが閉じられたときにクリーンアップを行うためにこのメソッドをオーバーライドするのではなく、代わりにonStopに実装する必要があることに注意してください。

Cancelキャンセルを呼び出すと、ダイアログがキャンセルされます。これは基本的にdismiss()の呼び出しと同じですが、登録されている場合はDialogInterface.OnCancelListenerも呼び出します。

Hide このメソッドはダイアログを非表示にしますが、閉じないでください。

そして、詳細はこちらをご覧ください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.