Android Fragment生命周期及静态加载
一个Fragment必须总是被嵌入到一个Activity中,它的生命周期直接被其所属的宿主Activity生命周期影响,它的状态会随宿主的状态变化而变化。
要创建一个Fragment 必须创建一个Fragment的子类,或者继承自另一个已经存在的Fragment的子类.并重写onCreateView()方法加载UI。

静态加载两个Fragment,左边显示三个Button,右边显示一个TextView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.lesson10_fragment.MainActivity"> <fragment
android:tag="fragment1"
android:name="com.example.lesson10_fragment.Fragment1"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <fragment
android:tag="fragment2"
android:name="com.example.lesson10_fragment.Fragment2"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> </LinearLayout>
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button2"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button3"/>
</LinearLayout>
frag1_layout.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="哈哈哈啊哈哈"
android:textSize="50sp"
android:layout_centerInParent="true"/> </RelativeLayout>
frag2_layout.xml
public class Fragment1 extends Fragment{
@Override
public void onAttach(Context context) {
super.onAttach(context);
Log.e("TAG","----------Fragment1----onAttach");
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e("TAG","----------Fragment1----onCreate");
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View layout = View.inflate(getActivity(),R.layout.frag1_layout,null);
//由于这super.onCreateView(inflater, container, savedInstanceState)返回的是null,所以不能用
Log.e("TAG","----------Fragment1----onCreateView");
return layout;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.e("TAG","----------Fragment1----onActivityCreated");
}
@Override
public void onStart() {
super.onStart();
Log.e("TAG","----------Fragment1----onStart");
}
@Override
public void onResume() {
super.onResume();
Log.e("TAG","----------Fragment1----onResume");
}
@Override
public void onPause() {
super.onPause();
Log.e("TAG","----------Fragment1----onPause");
}
@Override
public void onStop() {
super.onStop();
Log.e("TAG","----------Fragment1----onStop");
}
@Override
public void onDestroyView() {
super.onDestroyView();
Log.e("TAG","----------Fragment1----onDestroyView");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.e("TAG","----------Fragment1----onDestroy");
}
@Override
public void onDetach() {
super.onDetach();
Log.e("TAG","----------Fragment1----onDetach");
}
}
Fragment1.java
public class Fragment2 extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View layout = View.inflate(getActivity(),R.layout.frag2_layout,null);
return layout;
}
}
Fragment2.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("TAG","---MainActivity----onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.e("TAG","---MainActivity----onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.e("TAG","---MainActivity----onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.e("TAG","---MainActivity----onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.e("TAG","---MainActivity----onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("TAG","---MainActivity----onDestroy");
}
@Override
protected void onRestart() {
super.onRestart();
Log.e("TAG","---MainActivity----onRestart");
}
}
MainActivity.java
运行之后


Android Fragment生命周期及静态加载的更多相关文章
- (转)JVM类生命周期概述:加载时机与加载过程
原文地址: http://blog.csdn.net/justloveyou_/article/details/72466105 JVM类加载机制主要包括两个问题:类加载的时机与步骤 和 类加载的方式 ...
- JVM类生命周期概述:加载时机与加载过程
一个.java文件在编译后会形成相应的一个或多个Class文件,这些Class文件中描述了类的各种信息,并且它们最终都需要被加载到虚拟机中才能被运行和使用.事实上,虚拟机把描述类的数据从Class文件 ...
- Android Fragment 生命周期及其API使用(建议使用自定义View替换Fragment)
我为什么不主张使用Fragment Fragment:( Fragment就相当于一个有生命周期的View,它的生命周期被所在的Activity的生命周期管理 ) 生命周期回调说明: onAttach ...
- Android Fragment 生命周期及其正确使用(建议使用自定义View替换Fragment)
使用Fragment 官方例子中显示: 例如:一个学生Fragment,需要传入studentId,进行http请求显示,那么setArguments后防止杀掉Fragment后,参数为0,显示不了数 ...
- Android Fragment生命周期
Fragment与Activity的生命周期关系: 刚打开Activity:Fragment onAttach > Fragment onCreate > Fragment onCreat ...
- Vue生命周期钩子函数加载顺序的理解
Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁的过程,就是生命周期 ...
- Android Fragment 生命周期
启动的事件触发顺序 F Fragmeent A Activity onAttach(F) onAttachFragment(A) onCreate(F) onCreateView(F) onActiv ...
- Android学习——Fragment静态加载
从今天开始做一套安卓的学习笔记,开发环境是Android Studio,把学习过程中的知识和遇到的问题都写在这里,先从Fragment开始学起. Fragment概述 Fragment是Android ...
- 安卓Android碎片fragment实现静态加载
静态加载好后的界面如下,两个碎片分别位于一个活动的左边和右边: 左边和右边分别为一个碎片,这两个碎片正好将一整个活动布满.一个活动当中可以拥有多个碎片,碎片的含义就是可以在同一个UI界面下,将这个界面 ...
随机推荐
- VC++读取资源中文件
//查找目标资源 HRSRC hResource = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MAINPROG), TEXT(& ...
- PHP表单
二.PHP表单 1.PHP表单处理 welcome.html <html> <body> <form action="welcome.php" met ...
- Canvas实现文字粒子化,并且绕轴旋转(初号机)
写下来发现,程序在细节上处理的很差,比如旋转的时候,在终点处有明显的撞墙感觉,以及小部分粒子存在精度差异,导致撞击后不与整体平衡. 注释全在代码中了,就不多说了,另外感觉写的旋转的规则有点怪,后续再调 ...
- 史上最强NDK入门项目实战
目标: 利用NDK生成SO库,使用SO库进行JNI调用,在Android sdcard创建文件并写入数据. 工具: NDK1.5 R1, android SDK1.5 R1, SDCARD, Ecli ...
- 那些年被我坑过的Python——一夫当关 第十三章(堡垒机初步设计)
堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必 ...
- 设计模式——如何避免在OO设计中违反依赖倒置原则
1 变量不可以包含具体类的引用.一旦new,就对具体类产生依赖,用工厂模式来避开. 2 类不要派生至具体类.用派生抽象类避开. 3 不要覆盖基类已经实现的方法.基类中已实现的方法应该由所有子类共享.
- Oracle OCI-22053:溢出错误
Oracle 数值数据类型最多可存储 38 个字节的精度.当将 Oracle 数值转换 为公共语言运行库数据类型时,小数点后边的位数可能过多,这会导致此错误. 查询29万笔数据,报此错误,分析应该 ...
- codeforces C. Sereja and Swaps
http://codeforces.com/contest/426/problem/C 题意:找出连续序列的和的最大值,可以允许交换k次任意位置的两个数. 思路:枚举区间,依次把区间内的比较小的数换成 ...
- 微控制器(MCU)架构介绍
微控制器(MicroController)又可简称MCU或μC,也有人称为单芯片微控制器(Single Chip Microcontroller),将ROM.RAM.CPU.I/O集合在同一个芯片中, ...
- 【HDOJ】3309 Roll The Cube
BFS,考虑一球进洞仅一球滚动以及两球重叠的情况即可. /* 3309 */ #include <iostream> #include <queue> #include < ...