之前一篇文章Dialog使用介绍介绍了DialogFragemnt的一些使用常识,本文来简单介绍DialogFragment常用的生命周期函数,调用顺序如下:

onAttach -->onCreate-->onCreateDialog-->onCreateView-->onViewCreated-->onSaveInstanceState

在onAttach里传入要attach的Activity实例,使得在DialogFragment中可以调用Activity的函数。

@Override

public void onAttach(Activity activity) {

super.onAttach(activity);

historyViewClickListener = (OnHistoryViewClickListener) activity;

context = activity;

}

在onCreate里对DialogFragment的样式进行设置,如是不是全屏显示,要不要展示Titlebar等。

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setStyle(STYLE_NO_FRAME, android.R.style.Theme_Holo_Light); // 没有titlebar,全屏展示

}

在onCreateDialog里设置dialog监听函数,如对返回键的监听。

@NonNull

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

Dialog dialog = super.onCreateDialog(savedInstanceState);

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {

@Override

public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

doHide();

return true;

}

return false;

}

});

return dialog;

}

在onCreateView中进行view的初始化,并且解析savedIsntanceState Bundle数据,处理DialogFragment被回收后进行重建的数据处理逻辑。

@Nullable

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view = getActivity().getLayoutInflater().inflate(R.layout.atom_flight_history_record_view, container, false);

Injector.inject(this, view);

if (null != savedInstanceState) {

records = (List) savedInstanceState.getSerializable("records");

isShowDays = savedInstanceState.getBoolean("isShowDays", false);

spaceHeight = savedInstanceState.getInt("spaceHeight");

listAdapter = new FlightHistoryListAdapter(context, records, isShowDays);

} else {

listAdapter = new FlightHistoryListAdapter(context, records, isShowDays);

}

return view;

}

onViewCreated紧跟在onCreateView之后执行,执行界面初始化完成之后的一些操作,如动画效果。

@Override

public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {

super.onViewCreated(view, savedInstanceState);

showHistoryAnimation();

}

在onSaveInstanceState中保存重构页面需要的数据。

@Override

public void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

outState.putSerializable("records", (Serializable) records);

outState.putBoolean("isShowDays", isShowDays);

outState.putInt("spaceHeight", spaceHeight);

}

android dialogfragment 生命周期,DialogFragment生命周期简介相关推荐

  1. Android四大基本组件和生命周期的介绍

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...

  2. Android教程 -06 Activity的生命周期

    本篇播客我们重点介绍下如下知识点: 程序启动原理 Activity生命周期 Activity销毁与创建 视频建议采用超清模式观看, 欢迎点击订阅我的优酷 height="498" ...

  3. 傅里叶变换:周期、非周期 与连续、离散

    也是之前总结的 但是感觉很重要,分享出来,也方便自己不带本子的时候能快速找到. 傅里叶变化过程中,在两个域,周期和非周期.连续和离散问题.

  4. 【最全!最完整解析!】 计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期。因此,()

    计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期.因此,() A. 时钟周期大于机器周期 B. 时钟周期等于机器周期 C. 机器 ...

  5. 计组之中央处理器:2、指令周期数据流(指令周期、机器周期、时钟周期、取指周期、间址周期、执行周期、中断周期、单指令周期、多指令周期、流水线方案)

    2.指令周期数据流 思维导图 指令周期.机器周期.时钟周期 指令周期执行流程 取指周期 间址周期 执行周期 中断周期 指令执行方案 思维导图 指令周期.机器周期.时钟周期 指令周期不等 指令周期执行流 ...

  6. “要么你去驾驭生命,要么生命驾驭你。你的心态决定谁是坐骑,谁是骑师。”...

    心态决定人的行为取向.在不知情的情况下,人们持着平静的心态,轻轻松松地穿越看不见地障碍,而在困难一览无余的时候人们却犹豫胆怯了. 由此想起了心理学的创立者冯特讲述的一个经典故事:大雪纷飞的漆黑夜里,一 ...

  7. 计组高分笔记:【05】中央处理器 「CPU细节 | 取指周期 | 间址周期 | 执行周期 | 中断周期 | 数据通路 | 硬布线控制器 | 微程序控制器 | 指令流水线 | LOAD | STORE」

    文章目录 1. CPU的功能和基本结构 1.1 CPU的组成 1.1.1 运算器的基本组成 1.2.2 控制器的基本组成 1.2.3 CPU的总图 2. 指令执行过程 2.1 指令周期 2.2 指令的 ...

  8. Android以太网框架情景分析之启动简介

            Android以太网框架情景分析之启动简介 Android网络框架分析系列文章目录: Android P适配以太网功能开发指南 Android以太网框架情景分析之启动简介 Androi ...

  9. 朱嘉明:产业周期、科技周期与金融周期的失衡

    本文是作者在11月29日由中国国际商会和中国投资协会联合主办"大变局"数字经济线上研讨会上的主题发言. 以下是朱嘉明先生的发言: 大家好,我有一些想法,想借助这次机会,把这个想法跟 ...

最新文章

  1. Dorado7功能及技术特点
  2. 51Nod 1314 定位系统
  3. css元素穿透。 pointer-events: none;
  4. 相邀直播app最新入驻58位海外阿姨
  5. 【转】frame与bounds的区别比较
  6. web怎么在圆圈里画半html,在WEB里绘制爱心
  7. ros之service通讯
  8. Xamarin开发Android时Visual Studio 2012没有智能提示解决办法
  9. 题目458-小光棍数
  10. mysql alter 添加注释_我们如何使用MySQL ALTER TABLE命令在列上添加注释?
  11. mro python_Python的mro
  12. win7计算机设置成不黑屏,教你win7开机黑屏
  13. 鹅厂、狗厂、猫厂、熊厂、鸟厂、粮厂
  14. [ 树形DP ] BZOJ4987
  15. 家谱二叉树c语言程序,家谱图-二叉树
  16. 微信模拟登陆php投票,PHP爬虫和微信自动投票
  17. ubuntu 22.04 安装搜狗中文输入法
  18. 剪辑掉图像替换照片_使用动态剪辑过滤HTML图像标题
  19. youbnak初衷简介
  20. hbs模块 mysql_让koa-hbs模块支撑koa2

热门文章

  1. 名编辑电子杂志大师教程 | 封面动态鼠标痕迹
  2. 【模型复现】基于RNN优化的并行计算模型-SRU的快速复现「极链AI云 」
  3. HTML 链接 - href
  4. 仿淘宝网商品SKU系统设计经验分享
  5. git创建远程分支并将本地分支与远程分支关联
  6. 史上最强像素画教程「Pixel Art4」像素房間教學本
  7. python实现excel筛选功能并输出_Python商务办公系列——pandas实现Excel筛选和编辑...
  8. Git与远程仓库的连接操作
  9. 机器学习 泰坦尼克号——灾难中的机器学习
  10. 什么是单点登录及作用