DialogFragment是Fragment家族成员之一,如果你把它简单的理解成Dialog,那就错了。它的确可以做作dialog显示,还可以显示出自己定义的Dialog或者AlertDialog,但它同时也是一个Fragment。

按照官方的话来理解就是,你既可以把它当成一个dialog显示出来,也可以让它作为一个Fragment嵌套在Activity中,这样更方便开发。

为什么这么说呢?试想一下,当产品需求最开始把它作为一个界面显示的时候,你可能已经把它作为Fragment已经写好了,但中途产品又把它设计成一个dialog,那你该怎么办?重新去一个dialog或者activity吗?以前的传参怎么办?过两天,产品又将它改回去,你还要再重写一遍吗?等等一系列的问题就来了。

所以,这个时候,你只需要把当前的Fragment继承类改为DialogFragment,再添加几行代码就可以了。其他的,基本都不用动。即使过两天再改回来,或者别的界面也需要它的时候,你就可以直接把它当做Fragment,继续使用,代码都不用改。

这一点,不得不赞一下Fragment这个的出现,大大方便了开发,再也不怕产品设计调整界面布局了!

这里多啰嗦一句,如果产品已经定义好了作为dialog,或者之前就是dialog的,就不要将它们改成DialogFragment的了,还是那句话:只做有意义的代码改动!

今天之所以翻出源码来,主要还是希望通过对代码的了解,更好使用DialogFragment。而且有些细节部分,不看源码的话,可能就真在方法传值时传错了。比如:style的设置!

在源码最开始部分,就定义了style的常量:

publicstaticfinalintSTYLE_NORMAL =0;

publicstaticfinalintSTYLE_NO_TITLE =1;

publicstaticfinalintSTYLE_NO_FRAME =2;

publicstaticfinalintSTYLE_NO_INPUT =3;

STYLE_NORMAL:会显示一个普通的dialog

STYLE_NO_TITLE:不带标题的dialog

STYLE_NO_FRAME:无框的dialog

STYLE_NO_INPUT:无法输入内容的dialog,即不接收输入的焦点,而且触摸无效。

说起来,android很多参数的设置,都有用到“|”的方法,表示支持两种或两种以上。最常见的,就是“Top|Left”,所以,在这里有很多人会想用

android dismiss方法,Android编程之DialogFragment源码详解(一)注:对 dismissAllowingStateLoss()理解...相关推荐

  1. Android编程之DialogFragment源码详解(二)

    接上篇,继续: 然后就是setShowsDialog(boolean showsDialog)方法.官方文档是这样解释的:控制DialogFragment是否是一个dislog,如果设置为false, ...

  2. Android编程之DialogFragment源码详解(一)

    DialogFragment是Fragment家族成员之一,如果你把它简单的理解成Dialog,那就错了.它的确可以做作dialog显示,还可以显示出自己定义的Dialog或者AlertDialog, ...

  3. Android编程之Intent源码详解

    Intent源码详解,直接开始入题: Intent源码6700多行代码,但真正核心代码 就那么几百行,大部分都用来定义常量字符串了 先来看一下 public class Intent implemen ...

  4. Android编程之LocalBroadcastManager源码详解

    LocalBroadcastManager 是V4包中的一个类,主要负责程序内部广播的注册与发送.也就是说,它只是适用代码中注册发送广播,对于在AndroidManifest中注册的广播接收,则不适用 ...

  5. Android编程之ArrayList源码详解及使用

    ArrayList 本是 java中的代码,放到android这边显得不太合适,但由于它在android开发中又大量应用,所以就放到这里,供大家学习. 相信大家对ArrayList不陌生,但要说到细节 ...

  6. Android开发之GPS测试完整案例源码详解之实时检测GPS的状态

    获取Android系统Location位置服务实例: /*** Get location manager system service** @return LocationManager*/publi ...

  7. Android 网络编程之OkHttp源码解析

    前言:OkHttp框架是Android的网络请求框架,无数的项目都在使用着这个框架,重要性不言而喻; 本文会将OKHTTP的源码进行拆解,每个部分来单独学习,由简入深,循序渐进,篇幅较长,建议收藏,慢 ...

  8. 基于sqlite的android数据库编程,Android编程之SQLite数据库操作方法详解

    Android编程之SQLite数据库操作方法详解 发布时间:2020-09-07 12:33:04 来源:脚本之家 阅读:85 作者:低调小一 本文实例讲述了Android SQLite数据库操作方 ...

  9. 源码详解Android 9.0(P) 系统启动流程之SystemServer

    源码详解Android 9.0(P) 系统启动流程目录: 源码详解Android 9.0(P)系统启动流程之init进程(第一阶段) 源码详解Android 9.0(P)系统启动流程之init进程(第 ...

最新文章

  1. MaterialImageView
  2. 北斗导航 | Satellite Communications Toolbox——MATLAB2021a卫星通信工具箱(附代码)
  3. 详解log4j2(下) - Log4j2在WEB项目中配置
  4. [翻译]Django tutorial, part 1: Models
  5. 程序员求助:腾讯面试题,64匹马8个跑道,多少轮选出最快的四匹
  6. 用python写名字
  7. Unity NGUI 组件简介
  8. 计算机组装课上机课干什么,多媒体技术与《计算机组装与维护》课的精彩结合:组装一台多媒体计算机需要哪些部件...
  9. 无线呼叫服务器对码设置,无线鼠标对码模式怎么设置
  10. 【笔记】lamp架构框图
  11. 【HAVENT原创】CentOS 6.5 安装nodeJS
  12. 计算机管理打不开路径不存在,电脑打不开软件提示路径不正确如何解决
  13. android win7 共享网络打印机,详解win7共享打印机如何设置
  14. Git拉取远程最新代码,并与当前分支合并
  15. device 查看tensor_Tensor数据操作
  16. golang关于panic的解析
  17. 学前端要多久?学前端要多久?学前端多少钱
  18. 转:华为网络工程师离职总结:资质平庸的人该怎么办?震惊了无数人!
  19. 阿里云IoT2018年度十佳合作伙伴20强入围企业公布...
  20. AOP相关术语(连接点、切入点、通知、引介、目标对象、织入、代理、切面)

热门文章

  1. rabbitmq 手动提交_RabbitMQ系列(四)RabbitMQ事务和Confirm发送方消息确认——深入解读 - 王磊的博客 - 博客园...
  2. 正则表达式学习(二)
  3. 毕竟几人真得鹿,不知终日梦为鱼
  4. PostgreSQL基础语法
  5. 【腾讯云FinOps Crane 集训营】让我看看还有谁没用过crane这个降本利器
  6. 服务器创建和附加虚拟磁盘,详解Hyper-V创建虚拟磁盘存储配置攻略
  7. 2017写给迷茫的自己
  8. linux允许指定ip访问
  9. struts 修改拦截器修改返回值_Struts2自定义拦截器
  10. 解决微信支付申请扫描提示“操作超时,请重新扫码确认问题”