java - 在DialogFragment的onDimiss回调中区分配置更改和真正的dismiss
问题描述
我onDismiss
在DialogFragment
.
public class MyDialogFragment extends DialogFragment {
@Override
public void onDismiss(DialogInterface dialog) {
// How to check whether this callback is caused by configuration change,
// Or real dismiss?
super.onDismiss(dialog);
}
}
onDismiss
将在以下情况下调用。
- 按返回按钮退出
DialogFragment
。 - 触摸外部对话区域退出。
- 显式调用
dismiss()
。 - 旋转设备。
我想区分“真正的解雇”(案例 1 和 2 和 3)与配置更改(案例 4)
在Activity
中,我通常这样做是为了区分。
@Override
public void onPause() {
super.onPause();
if (this.isFinishing()) {
// Real "termination"
}
}
我怎样才能实现类似的事情DialogFragment
解决方案
该类Activity
提供isChangingConfigurations()
调用,它允许您检查活动当前是否正在进行配置更改。如果您可以在onDismiss()
回调期间访问活动,则可以使用它。
但是,对话框在与活动分离后getActivity()
会被关闭,因此将在此回调中返回 null。onAttach()
不过,您可以通过实现回调来存储对该活动的引用。
public class MyDialogFragment extends DialogFragment {
private MyActivity activity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.activity = (MyActivity) context;
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
if (activity.isChangingConfigurations()) {
// your code here
}
}
}
推荐阅读
- dart - 如何在 Dart 中模拟 undefined
- php - Composer 不会自动加载自定义包
- meshlab - 自动从层文件中导出图像
- ssl - Traefik kubernetes 多个 SSL 证书
- vue.js - 如何解决无法读取 vue 中未定义的属性“默认值”?
- maximo - Maximo BMXAA4114E - 发生非法访问异常
- python - 绘制曲线以连接 matplotlib 中的点
- ios - 有什么方法可以在 Swift 中创建自定义下拉菜单?
- javascript - 隐藏/显示数据表中的列
- javascript - Nuxt:身份验证 + Axios 设置