一、简介
DialogFragment 是在 Android 3.0 时引入的,是一种特殊的 Fragment ,用于在 Acticity 上展示一个静态的对话框,如:提示框,输入框,等等
二、DialogFragment 的好处
在 DialogFragment 之前,我们一般使用 Dialog 或者 AlertDialog 来创建对话框,包括现在还是很多人以这种方式来创建,但是 Google 并不推荐直接使用 Dialog 创建对话框,而是推荐尽量使用 DialogFragment 来创建,这是因为 DialogFragment 有 Dialog 所没有的一些很好的特性
- DialogFragment 是 Fragment 的直接子类,和 Fragment 有着基本一致的声明周期,当屏幕旋转或者按后退键的时候,能更好的管理其生命周期,例如,旋转屏幕时,会导致对话框重新创建,使用 DialogFragment 的话,会由 FragmentManager 自己来重新创建对话框,而 Dialog 则没有这样的功能,必须手动创建。
三、使用 DialogFragment
3.1 使用 DialogFragment 至少需要实现 onCreateView() 或者 onCreateDialog() 方法,如下所示
|
|
3.2 具体的使用参考:http://blog.csdn.net/lmj623565791/article/details/37815413
其实,使用起来还是很简单的,但是仅仅这样使用,并不能显示我们程序员的专业性 0.0 , 我们要考虑复用性和封装,不想偷懒的程序员不是好程序员!!
四、封装成通用的 DialogFragment
这有一个哥们写的很不错,github 地址:https://github.com/developerHaoz/DialogFragmentDemos
本人也是分析了大神的思路,觉得很不错,就总结了下来,大概说下封装思路:主要是以 onCreateDialog 的方式来创建对话框,通过回调的形式,从外部传来 AlertDialog 来创建不同类型的提示框。
|
|
- 另一个设计点是监听对话框中的所做的操作,可能是选了某一个选项,又或者是点击了确定或取消等,也是以接口回调的形式来做的,可以更加自由的选择在什么地方来对这些操作处理,以其中的一个举例:
接口为:
|
|
以一个列表选项的对话框为例:
|
|
其中,列表的点击事件激活此回调接口,使用者,可以在需要的时候实现该接口,并且经过这一层的封装,代码看起来也更简洁,可读性更强!