Fragment——一个被称为第五大组件的组件

文章目录

    • 关于Fragment
    • Fragment的生命周期
    • 创建Fragment步骤
    • Activty中使用Fragment
    • 资料

关于Fragment

Android 3.0 开始引入的API,Fragment英文翻译是碎片的意思。也可以把它当作Activity的子控件,Fragment的使用都是在Activity里面的,受Activity的生命周期影响。当然,它本身具有自己的生命周期。Android 3.0引入Fragment的初衷是为了适应平板电脑,但在实际开发中,开发者逐渐挖掘了Fragment的更多用途,如配合TabLayout+ViewPager实现分页管理等等。因此把Fragment成为四大组件外的第五大组件一点都不为过。
Fragment——一个被称为第五大组件的组件_第1张图片
Fragment——一个被称为第五大组件的组件_第2张图片

Fragment的生命周期

Fragment拥有自己的生命周期,但被其所在的Activity所在的生命周期所控制。

  • onAttach
    Fragment和Activity建立关联的时候调用。
  • onCreate
    始化Fragment。可通过参数savedInstanceState获取之前保存的值。
  • onCreateView
    Fragment加载布局时调用。加载布局和findViewById的操作通常在此函数内完成,但是不建议执行耗时的操作,比如读取数据库数据列表。
  • onActivityCreated
    当Activity中的onCreate方法执行完后调用。
  • onStart
    执行该方法时,Fragment由不可见变为可见状态。
  • onResume
    执行该方法时,Fragment处于活动状态,用户可与之交互。
  • onPause
    执行该方法时,Fragment处于暂停状态,但依然可见,用户不能与之交互。
  • onStop
    执行该方法时,Fragment完全不可见
  • onDestroyView
    Fragment中的布局被移除时调用。销毁与Fragment有关的视图,但未与Activity解除绑定,依然可以通过onCreateView方法重新创建视图。通常在ViewPager+Fragment的方式下会调用此方法。
  • onDestroy
    销毁Fragment。通常按Back键退出或者Fragment被回收时调用此方法。
  • onDetach
    Fragment和Activity解除关联的时候调用。在onDestroy方法之后调用。

Fragment——一个被称为第五大组件的组件_第3张图片

创建Fragment步骤

创建Fragment主要实现以下方法

  • onCreate:系统创建Fragment对象时回调,获取初始化数据
  • onCreateView:当Fragment绘制界面组件时回调,返回Fragment所绑定的View
  • onPause:当用户离开Fragment时回调,常用于保存现场数据。
//取值对应的KEY
pivate final String KEY = "data";
//保存传递的值
private String data;
@Override
public void onCreate(Bundle savedInstanceState){
	super.onCreate(savedInstanceState)//启动如果包含KEY参数
	if(getArguments().containsKey(KEY)){
		data =  getArguments().getString(KEY);
	}
}

//重写该方法,返回的View作为与Fragment绑定的View
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
	View view = inflater.inflate(R.layout.fragment_demo,container,false);
	return View;
}

Activty中使用Fragment

Fragment是需要在Activity中使用的,把Fragment添加到Activity中主要有两种方式

  • 在布局文件中使用添加,并使用android:name=‘’属性指定Fragment实现类
<fargment
	android:name=‘com.xxx.xxx.MyFragment’
	android:id=''
	...
	/>
  • 在所在的Activity中通过FragmentTransaction对象使用add()方法添加,仍需元素但不需要指定Fragment实现类,该方法更加灵活。
<FrameLayout
	android:id='@+id/fragment_container'
	...
	/>
//创建Bundle ,向Fragment传递参数
Bundle arguments = new Bundle();
arguments.putString(”key“,"Hello World")//创建Fragment 实例
MyFragment fragment = new MyFragment();
//传递参数
fragment.setArguments(arguments);
//使用fragment替换之前设定的容器
FragmentTransaction fragmentTransaction  = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container,fragment).commit();

资料

[1] 疯狂Android讲义

你可能感兴趣的:(Android知识基础)