Android 对话框片段关闭事件

Android 对话框片段关闭事件,android,android-dialogfragment,Android,Android Dialogfragment,我需要处理DialogFragment的结尾(在调用.dismise之后)——例如,我将在活动中显示一个toast,该活动在dismise之后“包含”该片段 如何处理事件?在DialogFragment中重写onDismiss(),或者在构建片段的代码块中使用setOnDismissListener()。我遇到了类似的问题,但我想通知另一个有关对话框的活动(不是创建和显示对话框的活动) 虽然您可以按照Austin Mahoney的建议,在DialogFragment中重写onDismiss()方

我需要处理DialogFragment的结尾(在调用.dismise之后)——例如,我将在活动中显示一个toast,该活动在dismise之后“包含”该片段


如何处理事件?

在DialogFragment中重写
onDismiss()
,或者在构建片段的代码块中使用
setOnDismissListener()

我遇到了类似的问题,但我想通知另一个有关对话框的活动(不是创建和显示对话框的活动)

虽然您可以按照Austin Mahoney的建议,在DialogFragment中重写
onDismiss()
方法,但是不能使用
setOnDismissListener()
,因为DialogFragment根本不提供这种方法(根据:)

但是仍然有另一种很好的方法来通知任何其他有关该对话框的活动。,(我在那里找到了:),下面是:

首先,您应该使您的活动(您希望传递有关对话框的信息的活动)实现
OnDismissListener

public final class YourActivity extends Activity implements DialogInterface.OnDismissListener {

    @Override
    public void onDismiss(final DialogInterface dialog) {
        //Fragment dialog had been dismissed
    }

}
同样根据DialogFragment已经用
onDismiss()
方法实现了
ondismissleener
。这就是为什么您应该重写它并在那里调用您在活动中实现的
onDismiss()
方法:

public final class DialogFragmentImage extends DialogFragment {

    @Override
    public void onDismiss(final DialogInterface dialog) {
        super.onDismiss(dialog);
        final Activity activity = getActivity();
        if (activity instanceof DialogInterface.OnDismissListener) {
            ((DialogInterface.OnDismissListener) activity).onDismiss(dialog);
        }
    }

}

你想关闭对话框,然后在它被取消时在祝酒词中显示它吗?是的,我想做的就是引用tolds来覆盖onDismiss。现在我又有麻烦了。如何检索mainview上下文以创建toast?如果您创建另一个问题询问如何获取上下文,每个人都会受益。您可能还可以找到其他答案来回答这个问题。在onDismiss(..)中,如果我有多个对话框,如何识别一个对话框?当对话框被取消时,系统会在
onDismiss(最终对话框接口对话框)
参数中传递对取消对话框的引用。见: