左一:Fragment的生命周期 左二:Activity的生命周期和Fragment的生命周期的比较
Fragment的生命周期只有开始创建和结束的地方与Activity不同;
2,生命周期的分析;
1,创建时;
onAttach()
onCreate()
onCreateView()
onActivityCreated()
2,对用户可见
onstart()
onResume()
3,进入后台模式时;
onPause()
onstop()
4,退出时;
- onPause()
- onStop()
- onDestroyView()
- onDestroy()
- onDetach()
5,横屏切换时;
先销毁再重新创建
设置Fragment不重新创建需要在主配置文件设置
android:configChanges="orientation|screenSize"
二;动态替换Fargment技术分析
动态替换Fragment在android UI中使用的最广泛的
1,fragment1.xml文件内容
2,fragment2.xml内容
3,使用java来操作fragment1.xml和fragment2.xml,并分别创建fragment1.java和fragment2.java
Fragment1 继承Fragment 重写onCreateView的方法
public class Frament1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d("Fragment", "onCreateView"); return inflater.inflate(R.layout.frament1, container,false); } }
分析Fragment1中的代码;
inflater.inflate(R.layout.frament1, container,false);获得布局文件,ViewGroup ,false
Fragment2中的代码;
public class Frament2 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.frament2, container,false); } }
4,定义底部的图片按钮的布局文件 bottom_image.xml 每张图片添加监听事件
5,定义Fragment3来操作bottom_image.xml
public class Fragment3 extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //获得布局文件 View view=inflater.inflate(R.layout.bottom_image, container,false); return view; } }
6,定义布局文件(main.xml)给启动的类(MainActivity1)操作 (重点)
分析:动态切换的是中间位置,所以我们需要将中的使用布局表示;
main.xml 文件的内容
feagment 有一个id
name;com.example.frament.Fragment3表示的是java的类 此时的Fragment3表示一个布局文件
7,启动程序的类
package com.example.frament; import android.annotation.SuppressLint; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.Display; import android.view.View; public class MainActivity1 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // // //向活动添加碎片,根据屏幕的纵向和横向显示 // //1,获取碎片管理器 // FragmentManager fragment=getFragmentManager(); // //2,碎片的显示需要使用FragmentTransaction类操作 // FragmentTransaction transacction=fragment.beginTransaction(); // //获取屏幕管理器和默认的显示 // Display display=getWindowManager().getDefaultDisplay(); // //判断横屏 // if(display.getWidth()>display.getHeight()){ // //获取java类 // Frament1 frament1 = new Frament1(); // transacction.replace(android.R.id.content, frament1); // }else{ // Frament2 frament2 = new Frament2(); // transacction.replace(android.R.id.content, frament2); // } // //使用FragmentTransaction必须要commit // transacction.commit(); } //创建监听的方法 public void change(View v){ switch (v.getId()) { case R.id.img1: //获得Fragment的管理器 FragmentManager manager=getFragmentManager(); //获得事物的操作 FragmentTransaction transaction=manager.beginTransaction(); //创建对象 Frament1 fragment = new Frament1(); //添加内容 transaction.replace(R.id.fragment2, fragment); //提交 transaction.commit(); break; case R.id.img2: FragmentManager manager2=getFragmentManager(); FragmentTransaction transaction2=manager2.beginTransaction(); Frament2 fragment2 = new Frament2(); transaction2.replace(R.id.fragment2, fragment2); transaction2.commit(); break; } } }