一个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生命周期及静态加载的更多相关文章

  1. (转)JVM类生命周期概述:加载时机与加载过程

    原文地址: http://blog.csdn.net/justloveyou_/article/details/72466105 JVM类加载机制主要包括两个问题:类加载的时机与步骤 和 类加载的方式 ...

  2. JVM类生命周期概述:加载时机与加载过程

    一个.java文件在编译后会形成相应的一个或多个Class文件,这些Class文件中描述了类的各种信息,并且它们最终都需要被加载到虚拟机中才能被运行和使用.事实上,虚拟机把描述类的数据从Class文件 ...

  3. Android Fragment 生命周期及其API使用(建议使用自定义View替换Fragment)

    我为什么不主张使用Fragment Fragment:( Fragment就相当于一个有生命周期的View,它的生命周期被所在的Activity的生命周期管理 ) 生命周期回调说明: onAttach ...

  4. Android Fragment 生命周期及其正确使用(建议使用自定义View替换Fragment)

    使用Fragment 官方例子中显示: 例如:一个学生Fragment,需要传入studentId,进行http请求显示,那么setArguments后防止杀掉Fragment后,参数为0,显示不了数 ...

  5. Android Fragment生命周期

    Fragment与Activity的生命周期关系: 刚打开Activity:Fragment onAttach > Fragment onCreate > Fragment onCreat ...

  6. Vue生命周期钩子函数加载顺序的理解

    Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁的过程,就是生命周期 ...

  7. Android Fragment 生命周期

    启动的事件触发顺序 F Fragmeent A Activity onAttach(F) onAttachFragment(A) onCreate(F) onCreateView(F) onActiv ...

  8. Android学习——Fragment静态加载

    从今天开始做一套安卓的学习笔记,开发环境是Android Studio,把学习过程中的知识和遇到的问题都写在这里,先从Fragment开始学起. Fragment概述 Fragment是Android ...

  9. 安卓Android碎片fragment实现静态加载

    静态加载好后的界面如下,两个碎片分别位于一个活动的左边和右边: 左边和右边分别为一个碎片,这两个碎片正好将一整个活动布满.一个活动当中可以拥有多个碎片,碎片的含义就是可以在同一个UI界面下,将这个界面 ...

随机推荐

  1. wordpress通过代码禁用IE8, IE9,IE10等IE浏览器兼容视图模式(Compatibility View)

    目前wordpress主流主题大多都放弃了对IE6的支持!甚至IE6,IE7,IE8等的兼容模式也不支持!目前特别是国内的双核浏览器大多数使用使用IE内核都是使用的兼容模式!那将是非常糟糕!如何让IE ...

  2. 自动化工具word文档批量转html

    企业有很多的科室,科室的每个人或多或少都会写一些文档,有些文档领导需要浏览,解决的办法是将编辑的文档打印出来,供领导浏览,或是为了节约企业成本,文档就在人与人这间或部门之间copy过来,copy过去. ...

  3. ajax 文件上传,ajax

    ajax 文件上传,ajax 啥也不说了,直接上代码! <input type="file" id="file" name="myfile&qu ...

  4. js手机站跳转

    var yunzhuanhua_pc_domain = "http://www.域名.com#yht"; //PC站网址var yunzhuanhua_wap_domain = & ...

  5. xamp配置多域名站点

    xampp配置多站点出现,htdocs目录和虚拟目录二者只能选其一的情况,我的xampp安装在D:\xampp\,默认web根目录在D:\xampp\htdocs,然后我在D:\magento安装了m ...

  6. Robot Motion

    Description A robot has been programmed to follow the instructions in its path. Instructions for the ...

  7. 关于用POI和EXCEL交互的问题

    废话不多说,直接通过例子来说明POI的使用: 1.一个创建excel并写入数据的小例子,参照网上的一个例子: public class CreateXL { /** * @param args */ ...

  8. TWinControl的刷新过程(5个非虚函数,4个覆盖函数,1个消息函数,默认没有双缓冲,注意区分是TCustomControl还是Windows原生封装控件,执行流程不一样)

    前提条件:要明白在TWinControl有以下四个函数的存在,注意都是虚函数: procedure Invalidate; override;procedure Update; override;pr ...

  9. c# 函数相关练习

    1.输入一个正整数,求1!+2!+3!+...+n! 2.输入姓名,年龄,工作单位   我叫**,今年**岁了,现在在****工作   要求,在Main函数中接收这三个值   传到函数中打印 3.写一 ...

  10. JAVA循环结合标签使用,控制跳转

    public static void main(String[] args) { outer: for (int i = 0; true; i++) { inner: for (int j = 0; ...