gpt4 book ai didi

java - 区分配置更改和真正关闭,在 DialogFragment 的 onDimiss 回调中

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:09 24 4
gpt4 key购买 nike

我在 DialogFragment 中有以下 onDismiss 回调。

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 将在以下情况下被调用。

  1. 按后退按钮退出 DialogFragment
  2. 触摸对话框外部区域即可退出。
  3. 显式调用 dismiss()
  4. 旋转设备。

我想区分“真正解雇”(案例 1 & 2 & 3)与配置更改(案例 4)

Activity中,我通常这样做是为了区分。

@Override
public void onPause() {
super.onPause();

if (this.isFinishing()) {
// Real "termination"
}
}

我怎样才能在DialogFragment中实现类似的事情

最佳答案

Activity 类提供 isChangingConfigurations()调用,它允许您检查 Activity 当前是否正在进行配置更改。如果您可以在 onDismiss() 回调期间访问该 Activity,则可以使用它。

但是,对话框在与 Activity 分离后会被关闭,因此 getActivity() 将在此回调中返回 null。不过,您可以通过实现 onAttach() 回调来存储对该 Activity 的引用。

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
}
}
}

关于java - 区分配置更改和真正关闭,在 DialogFragment 的 onDimiss 回调中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51161190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com