Android DialogFragment总结

#.简介

    DialogFragment是继承Fragment,兼具Fragment和Dialog的特点:

    一方面,它具有Fragment的生命周期,可以由Activity的FragmentManager来管理器生命周期;

    另一方面,其内部包含一个Dialog成员变量,可以像窗口一样展示。

##.DialogFragment相对于Dialog的优点:

    Dialog的生命周期不会随着Activity生命周期变化而变化,而DialogFragment继承自Fragment,具有与Fragment相同的生命周期和管理方式,FragmentManager会自动管理DialogFragment的生命周期。

    所以在特定场景下,DialogFragment的生命周期管理起来更方便,例如:旋转屏幕等配置变化导致Activity重新创建时,Dialog会消失不见,而DialogFragment会由FragmentManager自动重建。

    谷歌官方推荐使用DialogFragment来代替Dialog。

##使用要点和示例

分析源代码可知,DialogFragment内部包含一个Dialog实例,显示的窗口实际上是这个Dialog实例的窗口。

1. 这个Dialog实例通过onCreateDialog()方法创建,可以覆写该方法,返回自定义的Dialog,如果界面简单的话,其实只覆写该方法就可以实现传统Dialog需要实现的业务。

2. 如果界面复杂的话,则需要在onCreateView()方法中返回需要显示的View,就像普通Fragment中一样。所不同的无非是,在onActivityCreated()中,DialogFragment内部会获取前面返回的View,如果返回的View不是null的话,则会调用mDialog.setContentView(view),将该View设置为Dialog的显示内容。

      也就是说,onCreateDialog()和onCreateView()实际上重写一个就行了,两个都重写是无意义的。如果在onCreateView()中自定了界面,它会覆盖内部Dialog的界面。如果前面在onCreateDialog()中自定义了Dialog的界面,这个界面也会被后面的覆盖掉。

3. 窗口大小的代码逻辑,放在子类的onActivityCreated()、或onStart()、onResume()方法中才会生效。个人习惯放在onActivityCreated()中。

     至于设置窗口大小的方法

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值