【问题标题】:What is the lifecycle of a BottomSheetDialogFragmentBottomSheetDialogFragment 的生命周期是什么
【发布时间】:2019-07-08 16:25:21
【问题描述】:

我正在尝试将 Algolia 实现为 BottomSheetDialogFragment,并且遇到了一些我认为与生命周期相关的问题。我试图弄清楚生命周期是什么,但我找不到答案。

很抱歉,如果有明显的原因要四处走走并获取该信息,但我试图查看文档但找不到它。

具体来说,我正在考虑何时调用 des onCreateDialog,以及该片段是否还有其他独特的方法。 我的问题是,由于某种原因,我的 searchBox 似乎无法与我的 Hits View 很好地连接(当我使用持久底页时,相同的代码有效,但我必须更改),我想知道是否需要调用搜索器和在我的代码中的其他地方提供帮助。

【问题讨论】:

标签: android android-fragments android-dialogfragment algolia bottom-sheet


【解决方案1】:

BottomSheetDialogFragment 的生命周期与Fragment 相同。

这很容易理解,因为BottomSheetDialogFragment 扩展了AppCompatDialogFragment(并仅添加了onCreateDialog() 函数),而后者又扩展了DialogFragment(并添加了onCreateDialog() 和setupDialog() 函数),其中转延伸Fragment。

DialogFragment 与Fragment (reference) 具有相同的生命周期。由于没有触及任何生命周期方法,AppCompatDialogFragment 和 BottomSheetDialogFragment 将具有与 Fragment 相同的生命周期。

public Dialog onCreateDialog (Bundle savedInstanceState)

重写以构建您自己的自定义对话框容器。这通常是 用于显示 AlertDialog 而不是通用 Dialog;做的时候 所以,Fragment.onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) 不需要 自从 AlertDialog 处理它自己的内容后实现。

这个方法会在 onCreate(android.os.Bundle) 和 在 Fragment.onCreateView(android.view.LayoutInflater, android.view.ViewGroup,android.os.Bundle)。默认实现 简单地实例化并返回一个 Dialog 类。

注意:DialogFragment 拥有 Dialog#setOnCancelListener 和 Dialog#setOnDismissListener 回调。你不能自己设置它们。 要了解这些事件,请覆盖 onCancel(android.content.DialogInterface) 和 onDismiss(android.content.DialogInterface)。

Official documentation 供进一步参考。

【讨论】:

  • 谢谢。那么onCreateDialog是从哪里进入的呢?在哪些方法之间?我仍然不太明白经验丰富的程序员从哪里获得这些信息。也许我只是不知道如何正确阅读文档。
  • 通常一个好的方法是查看官方文档、源代码文档(或者可以使用 ctrl-f 或 grep 快速查找出现的情况)、文章、SO 问题和图像。
  • @Tsabary 我已经更新了我的答案,通常假设子类将与父类具有相同的生命周期。 (当然,最好的做法是在继续之前快速查看官方文档或源代码进行确认)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 2018-04-15
  • 1970-01-01
  • 2020-01-06
相关资源
最近更新 更多