如何获得调用 Android DialogFragment onDismiss() 的原因?
How to get reason for Android DialogFragment onDismiss() being called?
在我的 DialogFragment 中,我重写了 onDismiss()
以便在用户关闭对话框时向父片段提供回调以通知它。
但是,onDismiss()
也会调用配置更改(例如,当设备旋转时)- 在这种情况下我不希望回调。
所以我一直在努力寻找一种方法来区分 onDismiss()
被要求进行用户交互和配置更改,但没有任何运气。
对于这两种情况中的每一种,这些检查 return 我的 onDismiss()
方法中的相同值:
isRemoving() == false
isDetached() == false
isAdded() == true
isInLayout() == false
isVisible() == false
我也试过覆盖 onConfigurationChanged(Configuration newConfig)
,但根本没有调用。
知道如何找到 onDismiss()
被调用的原因吗?
如果用户通过按 BACK 或触摸对话框外的区域关闭对话框 window,onCancel()
将在 onDismiss()
之前调用。
如果用户通过单击 Button
关闭对话框,您将能够捕获单击事件。
因此您可以通过覆盖 onCancel()
而不是 onDismiss()
并跟踪点击事件来解决问题。
在我的 DialogFragment 中,我重写了 onDismiss()
以便在用户关闭对话框时向父片段提供回调以通知它。
但是,onDismiss()
也会调用配置更改(例如,当设备旋转时)- 在这种情况下我不希望回调。
所以我一直在努力寻找一种方法来区分 onDismiss()
被要求进行用户交互和配置更改,但没有任何运气。
对于这两种情况中的每一种,这些检查 return 我的 onDismiss()
方法中的相同值:
isRemoving() == false
isDetached() == false
isAdded() == true
isInLayout() == false
isVisible() == false
我也试过覆盖 onConfigurationChanged(Configuration newConfig)
,但根本没有调用。
知道如何找到 onDismiss()
被调用的原因吗?
如果用户通过按 BACK 或触摸对话框外的区域关闭对话框 window,onCancel()
将在 onDismiss()
之前调用。
如果用户通过单击 Button
关闭对话框,您将能够捕获单击事件。
因此您可以通过覆盖 onCancel()
而不是 onDismiss()
并跟踪点击事件来解决问题。