Android Studio 单刷《第一行代码》系列 06 —— Fragment 生命周期
前情提要(Previously)
本系列将使用 Android Studio 将《第一行代码》(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android Studio 作为开发 IDE 的同学开路。
PS:其实我就是现学现卖,希望我能坚持刷完。
在前面刚学习了Fragment,这次来了解一下她的生命周期。
系列目录在此:
Fragment 的生命周期
先来看一下 Fragment 的生命周期图解吧。

与 Activity 的 关系
Fragment 必须是依存于 Activity 而存在的,因此 Activity 的生命周期会直接影响到 Fragment 的生命周期。Android 官网这张图很好的说明了两者生命周期的关系,如下

跟 Activity 比较,多了下面几个回调函数:
- onAttach(),当 Fragment 和 Activity 建立关联时调用。
- onCreateView(),当为 Fragment 创建视图时调用。
- onActivityCreated(),与 Fragment 关联的 Activity 已经创建完毕时调用。
- onDEstroyView(),当与 Fragment 关联的视图被移除时调用。
- onDetach(),当 Fragment 和 Activity 接触关联是调用。
体验 Fragment 的生命周期
打开上一篇 Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础 中的 FragmentTest 项目,修改 RightFragment 中的代码,重写每一个回调方法在里面加上输出日志,代码如下:
public class RightFragment extends Fragment {
public static final String TAG = "RightFragment"; @Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Log.d(TAG, "onAttach");
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView");
View view = inflater.inflate(R.layout.right_fragment, container, false);
return view;
} @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d(TAG, "onActivityCreated");
} @Override
public void onStart() {
super.onStart();
Log.d(TAG, "onStart");
} @Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume");
} @Override
public void onPause() {
super.onPause();
Log.d(TAG, "onPause");
} @Override
public void onStop() {
super.onStop();
Log.d(TAG, "onStop");
} @Override
public void onDestroyView() {
super.onDestroyView();
Log.d(TAG, "onDestroyView");
} @Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
} @Override
public void onDetach() {
super.onDetach();
Log.d(TAG, "onDetach");
}
}
- 运行,RightFragment 第一次加载,查看 Logcat 中的日志,如下图

- 点击 LeftFragment 中的 Button,AnotherRightFragment 替换 RightFragment 出现,查看日志,如下图

- 按 Back 键,RightFragment 出现,查看日志,如下图

- 再按 Back 键,程序退出,查看日志,如下图

OK 了,我们对 Fragment 的生命周期已经了解的差不多,更深刻的理解以后用到的时候再说了。
其它(Miscellaneous)
尽管我试图在本文中尽量完整的进行描述,但受限于篇幅和我的个人水平,本文难免有所遗漏,欢迎在评论中指出。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
关于作者(About Me)
本文谢绝转载,如需转载需征得作者本人同意,谢谢。
Android Studio 单刷《第一行代码》系列 06 —— Fragment 生命周期的更多相关文章
- Android Studio 单刷《第一行代码》系列目录
前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...
- Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...
- Android Studio 单刷《第一行代码》系列 07 —— Broadcast 广播
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- 【java学习系列】 Android第一本书《第一行代码》
开始Java的学习,从Android,开始吧.<第一代码>开始阅读和调试demo例子. 下面是 <第一行代码>的思维导图:
- Android Studio:Unable to add window android.view.ViewRootImpl$W@5e2d85a -- permission denied for this window 第一行代码
学习<第一行代码>的时候,出现的错误. java.lang.RuntimeException: Unable to start receiver com.example.sevenun.l ...
随机推荐
- Ubuntu下用SecureCRT连接串口/dev/ttyUSB0权限修复
在普通用户的模式下,用SecureCRT链接串口交换机,开始会提示/dev/ttyUSB0权限不足,无法打开,临时的解决办法是 chmod 0+rw /dev/ttyUSB0 但是这个重启后便没了作用 ...
- Nginx - Events Module
The Events module comes with directives that allow you to configure network mechanisms. Some of the ...
- 【AngularJs】---实现select的ng-options
controller .controller('MainController', function($scope, $http, $ionicModal, $timeout) { var post = ...
- C# 为网络程序添加用户代理
如何为网络程序添加用户代理,本人推荐使用UrlMkSetSessionOption函数, 不过该函数有一个弱点不可以X64编译,X86编译软件才可以调用该函数 否则会一直返回!S_OK意义错误.第二呢 ...
- HDOJ2023求平均成绩
求平均成绩 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 每天一道LeetCode--169.Majority Elemen
Given an array of size n, find the majority element. The majority element is the element that appear ...
- 淘淘实惠多www.taohuiduo.com-专注独家折扣、1折特卖、9块9包邮、全场包邮
淘淘实惠多-http://www.taohuiduo.com 专注独家折扣.1折特卖.9块9包邮.品牌折扣.20元封顶.全场包邮,所有的促销商品包括男装.女装.箱包配饰.母婴.日用.化妆品.数码.男鞋 ...
- Contoso 大学 - 使用 EF Code First 创建 MVC 应用
原文 Contoso 大学 - 使用 EF Code First 创建 MVC 应用 Contoso 大学 Web 示例应用演示了如何使用 EF 技术创建 ASP.NET MVC 应用.示例中的 Co ...
- .NET的JSNO 序列化跟反序列化
由于本人最近在写webservice,之前一直都同通过AJAX,在服务端处理业务,但是最近需要写一些接口给其他人用,需要使用jsno的序列化与反序列化,什么是jsno就不多说,jsno的好处也不多说, ...
- Unity编程回忆录之控制物体移动
最新心血来潮,然后开始学习Unity3D游戏开发引擎,对于一个主流的跨平台3D游戏开发引擎,我已经深深的为他着迷了,于是果断的开始学习这个引擎,而且刚刚预装的游戏引擎最新版中4.3版本已经开始原生支持 ...