android dialogfragment 生命周期,DialogFragment生命周期简介
之前一篇文章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生命周期简介相关推荐
- Android四大基本组件和生命周期的介绍
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...
- Android教程 -06 Activity的生命周期
本篇播客我们重点介绍下如下知识点: 程序启动原理 Activity生命周期 Activity销毁与创建 视频建议采用超清模式观看, 欢迎点击订阅我的优酷 height="498" ...
- 傅里叶变换:周期、非周期 与连续、离散
也是之前总结的 但是感觉很重要,分享出来,也方便自己不带本子的时候能快速找到. 傅里叶变化过程中,在两个域,周期和非周期.连续和离散问题.
- 【最全!最完整解析!】 计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期。因此,()
计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期.因此,() A. 时钟周期大于机器周期 B. 时钟周期等于机器周期 C. 机器 ...
- 计组之中央处理器:2、指令周期数据流(指令周期、机器周期、时钟周期、取指周期、间址周期、执行周期、中断周期、单指令周期、多指令周期、流水线方案)
2.指令周期数据流 思维导图 指令周期.机器周期.时钟周期 指令周期执行流程 取指周期 间址周期 执行周期 中断周期 指令执行方案 思维导图 指令周期.机器周期.时钟周期 指令周期不等 指令周期执行流 ...
- “要么你去驾驭生命,要么生命驾驭你。你的心态决定谁是坐骑,谁是骑师。”...
心态决定人的行为取向.在不知情的情况下,人们持着平静的心态,轻轻松松地穿越看不见地障碍,而在困难一览无余的时候人们却犹豫胆怯了. 由此想起了心理学的创立者冯特讲述的一个经典故事:大雪纷飞的漆黑夜里,一 ...
- 计组高分笔记:【05】中央处理器 「CPU细节 | 取指周期 | 间址周期 | 执行周期 | 中断周期 | 数据通路 | 硬布线控制器 | 微程序控制器 | 指令流水线 | LOAD | STORE」
文章目录 1. CPU的功能和基本结构 1.1 CPU的组成 1.1.1 运算器的基本组成 1.2.2 控制器的基本组成 1.2.3 CPU的总图 2. 指令执行过程 2.1 指令周期 2.2 指令的 ...
- Android以太网框架情景分析之启动简介
Android以太网框架情景分析之启动简介 Android网络框架分析系列文章目录: Android P适配以太网功能开发指南 Android以太网框架情景分析之启动简介 Androi ...
- 朱嘉明:产业周期、科技周期与金融周期的失衡
本文是作者在11月29日由中国国际商会和中国投资协会联合主办"大变局"数字经济线上研讨会上的主题发言. 以下是朱嘉明先生的发言: 大家好,我有一些想法,想借助这次机会,把这个想法跟 ...
最新文章
- Dorado7功能及技术特点
- 51Nod 1314 定位系统
- css元素穿透。 pointer-events: none;
- 相邀直播app最新入驻58位海外阿姨
- 【转】frame与bounds的区别比较
- web怎么在圆圈里画半html,在WEB里绘制爱心
- ros之service通讯
- Xamarin开发Android时Visual Studio 2012没有智能提示解决办法
- 题目458-小光棍数
- mysql alter 添加注释_我们如何使用MySQL ALTER TABLE命令在列上添加注释?
- mro python_Python的mro
- win7计算机设置成不黑屏,教你win7开机黑屏
- 鹅厂、狗厂、猫厂、熊厂、鸟厂、粮厂
- [ 树形DP ] BZOJ4987
- 家谱二叉树c语言程序,家谱图-二叉树
- 微信模拟登陆php投票,PHP爬虫和微信自动投票
- ubuntu 22.04 安装搜狗中文输入法
- 剪辑掉图像替换照片_使用动态剪辑过滤HTML图像标题
- youbnak初衷简介
- hbs模块 mysql_让koa-hbs模块支撑koa2