【问题标题】:What is lifecycle of DialogFragmentDialogFragment 的生命周期是什么
【发布时间】:2018-07-31 13:42:12
【问题描述】:

我无法通过在 Google 上搜索找到 android.support.v4.app.DialogFragment 的正确生命周期。我需要这个来进行一些实施。我们知道DialogFragment 有一些类似Dialog 的方法。

DialogFragment 扩展了Fragment,因此它的生命周期与Fragment 相同。但是DialogFragment的其他方法呢?

这里是Fragment 生命周期。可以提供DialogFragment吗?

【问题讨论】:

标签: android android-dialogfragment dialogfragment appcompatdialogfragment


【解决方案1】:

DialogFragment 的生命周期类似于 fragment: 的生命周期。要测试自己,请将日志放入 dialogFragment 的每个 overrided 方法中,然后运行您的代码,您将了解 dialogFragment 的工作原理。

onAttach
onCreate
onCreateDialog
onCreateView
onActivityCreated
onStart
onResume

就完成或销毁 dialogFragment 而言,生命周期如下:

onPause
onStop
onDestroyView
onDestroy
onDetach

另外我相信这个方法也能帮助你了解lifecycle

@NonNull
@Override
public Lifecycle getLifecycle() {
    return super.getLifecycle();
}

【讨论】:

  • 谢谢,我也可以通过创建日志来检查生命周期,但我发布了问题。因为 SO 应该是一个很好的问题集合。您还应该添加 onStop、onDestroy 等以使答案很好。
  • @Khemraj 是的,应该是这样,dialogFragment 就像一个片段,因为如果您仔细查看文档,dialogFragment 扩展了实现回调的片段。快乐编码:)
  • 据了解,我在问题中提到,DialogFragment 扩展了 Fragment。但我不知道 onCreateDialog 上的顺序。
  • 这不是真的。 onCreateDialog 永远不能保证在 onStart/onResume 之前被调用。基本上它不是“真正的”生命周期的一部分。
【解决方案2】:

奇怪,如果你在onCreateDialog() 中创建了一个AlertDialog,没有调用onCreateView(),那么onViewCreated() 也不会调用。

参见Android DialogFragment onViewCreated not calledOnCreateView not called in a dialogfragment from a fragment

【讨论】:

    【解决方案3】:

    DialogFragment 做各种事情来保持片段的生命周期 驾驶它,而不是对话框。请注意,对话框通常是 自治实体——它们是自己的窗口,接收自己的 输入事件,并且经常自行决定何时消失(通过 接收返回键事件或用户点击按钮)。

    来源: https://developer.android.com/reference/android/app/DialogFragment#lifecycle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 2018-04-15
      • 1970-01-01
      • 2020-01-06
      相关资源
      最近更新 更多