介绍:
(一)Android在3.0中引入了Fragment的概念,主要目的是用在大屏幕设备上—例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机大的多,有更多的空间放更多的UI组件,并且这些组件之间会产生更多的交互
(二)Fragment在你的应用中应当是一个模块化和可重用的组件,因为Fragment定义了他自己的布局,以及通过使用他自己的生命周期回调方法定义了他自己的行为,你可以将Fragment包含到多个activity中
(三)【Fragment知识概要】
(1)Fragment可以作为Activity界面的一部分组成出现
(2)可以在一个activity同时多个Fragment,并且一个Fragment可以运行在多个activity中使用
(3)在activity运行过程中,可以添加、移除、替换Fragment
(4)Fragment可以响应自己的输入事件,并且有自己的生命周期,他们的生命周期会受宿主activity的生命周期的影响
Fragment的生命周期:
上图: 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"
如何在两个fragment间切换
替换fragment的过程跟add差不错,区别就是一个是replace()函数,一个是add()函数。时刻要注意的是当执行fragment操作,比如替换或者移除一个fragment,用户经常的操作是回退(backward)或者还原(undo)操作。为了支持用户的这些操作,我们要在commit()一个FragmentTransaction之前先调用函数addToBackStack()函数。
注意:当移除或者替换一个fragment,并且将这个操作放入back stack(回退堆栈?),当fragment被移除的时候,fragment是停止的(并非销毁)。如果用户要回退,会从堆栈中取一个fragment并且重启(restart)它。如果没有加入back stack,当移除或者替换的时候,这个fragment就直接被销毁了。
切换fragment如下:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, 新的fragment);
transaction.addToBackStack(null);
transaction.commit();
传参数到新的一个fragment
Bundle args = new Bundle();
args.putString("name", "jack");
newFragment.setArguments(args);