DialogFragment关闭事件

gio*_*ozh 11 android android-dialogfragment

我需要处理DialogFragment的结束(在调用.dismiss之后) - 例如,我会在关闭后"包含"片段的活动中显示一个toast.

我该如何处理这个事件?

Aus*_*ney 22

onDismiss()在DialogFragment中覆盖,或setOnDismissListener()在构建片段的代码块中使用.


Krz*_*iek 13

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

虽然您可以onDismiss()像Austyn Mahoney建议的那样覆盖DialogFragment中的方法,但是您不能使用setOnDismissListener(),因为DialogFragment根本不提供这样的方法(根据:Android Developers DialogFragment Reference).

但仍然有另一个很好的方式告知任何其他活动关于对话解雇,(我在那里找到它:DialogFragment和onDismiss),它来了:

首先,您应该使您的活动(您希望传递关于对话关闭的信息的那个)实现OnDismissListener:

public final class YourActivity extends Activity implements DialogInterface.OnDismissListener {

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

}
Run Code Online (Sandbox Code Playgroud)

再次根据Android开发者DialogFragment参考 DialogFragment已经实现OnDismissListeneronDismiss()方法.这就是为什么你应该覆盖它并调用onDismiss()你在YourActivity中实现的方法:

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);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)