DialogFragment 和 onDismiss [英] DialogFragment and onDismiss
问题描述
我正在使用 DialogFragment
,我在 Activity
中显示它是这样的:
I am using a DialogFragment
, which I am showing like this from an Activity
:
DialogFragmentImage dialog = DialogFragmentImage.newInstance(createBitmap());
dialog.onDismiss(dialog);.onDismiss(this);
dialog.show(getFragmentManager(), "DialogFragmentImage");
我想检查 DialogFragment
何时被解除(例如按下后退按钮时),但在我的 Activity
中.我怎样才能做到这一点?我如何告诉"我的 activity
DialogFragment
已被解除?
I would like to check when the DialogFragment
was dismissed (for example when the back button was pressed), but in my Activity
. How can I do that? How can I "tell" my activity
that the DialogFragment
has been dismissed?
推荐答案
让你的Activity实现OnDismissListener
Make your Activity implement OnDismissListener
public final class YourActivity extends Activity implements DialogInterface.OnDismissListener {
@Override
public void onDismiss(final DialogInterface dialog) {
//Fragment dialog had been dismissed
}
}
DialogFragment 已经实现了 OnDismissListener
,只需覆盖该方法并调用 Activity.
DialogFragment already implements OnDismissListener
, just override the method and call the Activity.
public final class DialogFragmentImage extends DialogFragment {
///blah blah
@Override
public void onDismiss(final DialogInterface dialog) {
super.onDismiss(dialog);
final Activity activity = getActivity();
if (activity instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) activity).onDismiss(dialog);
}
}
}
如果您使用 childFragment
管理器 (API>=17) 从片段启动对话框,则可以使用 getParentFragment
与父级上的 onDismissListener 对话片段.:
If you're starting the dialog from a fragment using the childFragment
manager (API>=17), you can use getParentFragment
to talk to the onDismissListener on the parent fragment.:
public final class DialogFragmentImage extends DialogFragment {
///blah blah
@Override
public void onDismiss(final DialogInterface dialog) {
super.onDismiss(dialog);
Fragment parentFragment = getParentFragment();
if (parentFragment instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) parentFragment).onDismiss(dialog);
}
}
}
这篇关于DialogFragment 和 onDismiss的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!