我已经完成了一些关于Android中对话框的阅读,我有一个未解决的问题:
当我使用处理对话框的Activity的方法(例如:onCreateDialog(...)
)时,我应该还是不应该忽略onPause()
中的对话框?
或者我可能只有在保留它的情况下才会忽略它 - 制作一个引用此对话框的Activity成员变量?
我找到了这个答案:https://stackoverflow.com/a/2851833/501560说我需要显式调用dismiss()
方法,但我已经阅读了一些其他资源,说Activity应该自己处理它...
感谢。
答案 0 :(得分:2)
取消对话
当您准备关闭对话框时,可以通过调用Dialog对象上的dismiss()来关闭它。如果有必要,你也可以从Activity调用dismissDialog(int),它会为你有效地调用Dialog上的dismiss()。
如果使用onCreateDialog(int)
来管理对话框的状态(如上一节所述),则每次关闭对话框时,Activity都会保留Dialog对象的状态。如果您决定不再需要此对象,或者清除状态很重要,那么您应该致电removeDialog(int)
。这将删除对象的任何内部引用,如果对话框显示,它将忽略它。
使用解雇侦听器
如果您希望应用程序在对话框被解除时执行某些过程,那么您应该在对话框上附加一个on-dismiss侦听器。
首先定义DialogInterface.OnDismissListener interface
。此接口只有一个方法onDismiss(DialogInterface)
,当对话框被解除时将调用该方法。然后只需将OnDismissListener
实施传递给
setOnDismissListener().
但请注意,对话框也可以“取消”。这是一种特殊情况,表示用户明确取消了对话框。如果用户按下“后退”按钮关闭对话框,或者对话框明确调用cancel()
(可能来自对话框中的“Cancel
”按钮),则会发生这种情况。取消对话框时,仍然会通知OnDismissListener,但是如果您希望被告知该对话框已被明确取消(并且未被正常解除),那么您应该注册一个
DialogInterface.OnCancelListener with setOnCancelListener().
答案 1 :(得分:0)
如果该对话框由活动管理,则永远不必关闭该对话框。 当对话框被销毁时,它将关闭对话框。如果活动暂停,则不必解除Dialog。
答案 2 :(得分:0)
我认为对话框应该在活动生命周期的onStop()
或onPause()
中被解雇。
https://developer.android.com/reference/android/app/Dialog.html#dismiss()