1

Androidのダイアログについて読んだことがありますが、未解決の問題があります。

ダイアログを処理するアクティビティのメソッド(:など)を使用している場合、 ?onCreateDialog(...)でダイアログを閉じる必要がありますか、または閉じないでください。onPause()または、保持した場合にのみ却下する必要があります-このダイアログへの参照を持つActivityメンバー変数を作成しましたか?

私はこの答えを見つけました:https ://stackoverflow.com/a/2851833/501560メソッドを明示的に呼び出す必要があるとdismiss()言っていますが、アクティビティがそれを単独で処理する必要があると言っている他のリソースをいくつか読みました...

ありがとう。

4

3 に答える 3

3

ダイアログを閉じる

ダイアログを閉じる準備ができたら、Dialogオブジェクトでdismiss()を呼び出してダイアログを閉じることができます。必要に応じて、アクティビティからdismissDialog(int)を呼び出すこともできます。これにより、ダイアログでdismiss()が効果的に呼び出されます。

ダイアログの状態を管理するためにを使用している場合onCreateDialog(int)(前のセクションで説明したように)、ダイアログが閉じられるたびに、ダイアログオブジェクトの状態がアクティビティによって保持されます。このオブジェクトが不要になると判断した場合、または状態をクリアすることが重要な場合は、を呼び出す必要がありますremoveDialog(int)。これにより、オブジェクトへの内部参照がすべて削除され、ダイアログが表示されている場合は、オブジェクトが閉じられます。

却下リスナーの使用

ダイアログが閉じられた瞬間にアプリケーションでいくつかの手順を実行したい場合は、ダイアログに閉じたままのリスナーをアタッチする必要があります。

まず、を定義しDialogInterface.OnDismissListener interfaceます。このインターフェイスにはonDismiss(DialogInterface)、ダイアログが閉じられたときに呼び出されるメソッドが1つだけあります。次に、OnDismissListener実装をに渡すだけです

setOnDismissListener().

ただし、ダイアログは「キャンセル」することもできることに注意してください。これは、ダイアログがユーザーによって明示的にキャンセルされたことを示す特殊なケースです。これは、ユーザーが「戻る」ボタンを押してダイアログを閉じる場合、またはダイアログが明示的に呼び出す場合cancel()(おそらくダイアログの「Cancel」ボタンから)に発生します。ダイアログがキャンセルされた場合でも、OnDismissListenerは通知されますが、ダイアログが明示的にキャンセルされた(通常は閉じられない)ことを通知したい場合は、登録する必要があります。

DialogInterface.OnCancelListener with setOnCancelListener().
于 2012-01-04T11:28:24.557 に答える
1

アクティビティによって管理されている場合は、ダイアログを閉じる必要はありません。アクティビティは、ダイアログが破棄されるとダイアログを閉じます。アクティビティが一時停止している場合、ダイアログを閉じる必要はありません。

于 2012-01-04T11:08:12.337 に答える
0

ダイアログは、アクティビティのライフサイクル内onStop()またはライフサイクルで閉じられることになっていると思いました。onPause()

https://developer.android.com/reference/android/app/Dialog.html#dismiss()

于 2017-02-03T21:51:11.600 に答える