笔记23 Fragment使用详解及心得--Fragment的生命周期
来源:互联网 发布:英语 荷兰语知乎 编辑:程序博客网 时间:2024/05/01 17:47
可以看到Fragment比Activity多了几个额外的生命周期回调方法:
onAttach(Activity)
当Fragment与Activity发生关联时调用。
onCreateView(LayoutInflater, ViewGroup,Bundle)
创建该Fragment的视图
onActivityCreated(Bundle)
当Activity的onCreate方法返回时调用
onDestoryView()
与onCreateView想对应,当该Fragment的视图被移除时调用
onDetach()
与onAttach相对应,当Fragment与Activity关联被取消时调用
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现,
package com.example.fragmentgather;import android.app.Activity;import android.app.Fragment;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class MyFragment3 extends Fragment { private TextView tv; //演示步骤步骤 // 启动Fragment——>屏幕锁屏——>屏幕解锁——> //切换到其他的Fragment——>回到桌面——>回到应用——>退出Fragment /** * 每次创建都会绘制Fragment的View组件时回调该方法 */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment2, container, false); TextView tv = (TextView) view.findViewById(R.id.text); tv.setText("第一个Fragment"); Log.i("Main", "Fragment1---onCreateView()"); return view; } /** * 当Fragment被添加到Activity时候会回调这个方法,并且只调用一次 */ @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.i("Main", "Fragment1---onAttach()"); } /** * 创建Fragment时会回调,只会调用一次 */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("Main", "Fragment1---onCreate()"); } /** * 当Fragment所在的Activty启动完成后调用 */ @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.i("Main", "Fragment1---onActivityCreated()"); } /** * 启动Fragment */ @Override public void onStart() { super.onStart(); Log.i("Main", "Fragment1---onStart()"); } /** * 恢复Fragment时会被回调,调用onStart()方法后面一定会调用onResume()方法 */ @Override public void onResume() { super.onResume(); Log.i("Main", "Fragment1---onResume()"); } /** * 暂停Fragment */ @Override public void onPause() { super.onPause(); Log.i("Main", "Fragment1---onPause()"); } /** * 停止Fragment */ @Override public void onStop() { super.onStop(); Log.i("Main", "Fragment1---onStop()"); } /** * 销毁Fragment所包含的View组件时 */ @Override public void onDestroyView() { super.onDestroyView(); Log.i("Main", "Fragment1---onDestroyView()"); } /** * 销毁Fragment时会被回调 */ @Override public void onDestroy() { super.onDestroy(); Log.i("Main", "Fragment1---onDestroy()"); } /** * Fragment从Activity中删除时会回调该方法,并且这个方法只会调用一次 */ @Override public void onDetach() { super.onDetach(); Log.i("Main", "Fragment1---onDetach()"); }}
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onAttach()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreate()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreateView()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onActivityCreated()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStart()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onResume()f
锁屏
09-20 23:43:19.261 3222-3222/com.example.fragmentgather E/Main: Fragment1---onPause()
09-20 23:43:19.265 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStop()
解锁
09-20 23:43:25.821 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStart()
09-20 23:43:25.821 3222-3222/com.example.fragmentgather E/Main: Fragment1---onResume()
切换到第一个
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onPause()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStop()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onDestroyView()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onDestroy()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onDetach()
切换到第二个
09-20 23:44:42.441 3222-3222/com.example.fragmentgather E/Main: Fragment1---onAttach()
09-20 23:44:42.441 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreate()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreateView()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onActivityCreated()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStart()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onResume()
- 笔记23 Fragment使用详解及心得--Fragment的生命周期
- Fragment生命周期详解及使用
- 笔记21 Fragment使用详解及心得--设计哲学、静态加载
- 笔记22 Fragment使用详解及心得--动态加载
- Android Fragment使用详解及生命周期
- Fragment使用及生命周期
- Fragment 的生命周期及使用方法详解
- Fragment 的生命周期及使用方法详解
- Fragment 的生命周期及使用方法详解
- fragment的生命周期详解
- Fragment的生命周期详解
- Fragment的生命周期及setuservisiblehint的使用
- Android Fragment的生命周期及使用
- 【Android】Fragment的生命周期详解
- Android Fragment的生命周期详解
- Fragment的概念及生命周期
- Android笔记 fragment的生命周期
- Fragment Fragment生命周期 Fragment详解 Fragment生命周期详解
- 使用Ajax+jQuery实现省市区三级联动
- MySQL binlog三种模式
- 【CUDA并行程序设计系列(4)】CUDA内存
- git管理代码常用命令
- mysql配置
- 笔记23 Fragment使用详解及心得--Fragment的生命周期
- Js对Date对象操作详解
- 【C++数据类型】C++中数组名的二义性
- Git配置用户名、邮件地址访问GitHub
- 数据存储2
- playfair加密算法
- java反射学习-以demo加理伦
- Java常用排序算法/程序员必须掌握的8大排序算法
- swift 阿拉伯数字转为汉字