我需要处理DialogFragment的结束(在调用.dismiss之后) - 例如,我会在关闭后“包含”片段的活动中显示吐司。
我该如何处理这个事件?
答案 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);
}
}
}