DialogFragment关闭事件

时间:2013-03-01 17:32:38

标签: android android-dialogfragment

我需要处理DialogFragment的结束(在调用.dismiss之后) - 例如,我会在关闭后“包含”片段的活动中显示吐司。

我该如何处理这个事件?

2 个答案:

答案 0 :(得分:22)

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

答案 1 :(得分:12)

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

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

但是还有另一种很好的方法可以通知任何其他关于对话关闭的活动,(我已经在那里找到了它:DialogFragment and onDismiss),来了:

首先,您应该使您的活动(您要传递关于对话关闭的信息的活动)实施OnDismissListener

public final class YourActivity extends Activity implements DialogInterface.OnDismissListener {

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

}

再次根据Android Developers DialogFragment Reference,DialogFragment已经使用OnDismissListener方法实现了onDismiss()。这就是为什么你应该覆盖它并调用你在YourActivity中实现的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);
        }
    }

}