12

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

我该如何处理事件?

4

2 回答 2

25

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

于 2013-03-01T17:39:13.140 回答
16

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

尽管您可以onDismiss()按照 Austyn Mahoney 的建议覆盖 DialogFragment 中的方法,但您不能使用setOnDismissListener(),因为 DialogFragment 根本不提供这种方法(根据:Android Developers DialogFragment Reference)。

但是还有另一种很好的方法可以通知任何其他有关对话框的活动dismiss,(我在那里找到了它:DialogFragment 和 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了 withonDismiss()方法。这就是为什么你应该覆盖它并在那里调用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);
        }
    }

}
于 2015-07-12T10:17:25.080 回答