什么是Fragment
自从Android 3.0中引入Fragmemts概念,根据词海的翻译为:碎片。片段 。其目的是为了解决不同屏幕分辨率的动态和灵活UI设计。大屏幕如平板,小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而产生了fragments.
fragments的设计不需要你来亲自管理view hierarchy的复杂变化,通过将Activity的布局分散到frament中,可以在运行时修改acitiy的外观,并且由acitivyt管理的back stack中保存变化。当一个片段指定了自身布局时,它能和其他片段配置成不同的组合,再活动中为不同的屏幕尺寸修改布局配置(小屏幕可能每次显示一个片段,而大屏幕则可以显示两个或者多个)
Fragment 必须被写成可重用的模块。因为fragment有自己的layout 进行事件响应,拥有自己的生命周期和行为,所以你可以在多个activty中包含同一个Fragment的不同实例。这对于让你的界面再不同的屏幕尺寸下都能给用户完美的体验尤为重要。
Fragment 优点
Fragment可以使你能够将acitivity分离成多个重用的组件,每个都有它自己的生命周期和UI.
Fragment可以轻松得创建动态灵活的UI设计,可以适应于不同的屏幕尺寸,从手机到平板电脑。
Fragment是一个独立的模块,紧紧地与activity绑定在一起。可以运行中动态地删除,加入,交换等。
Fragment提供一个新的方式 让你再不同的安卓设备上统一你的UI
Fragment 解决Acitiy间的切换不流畅,轻量切换
Fragment 在4.2版本中新增嵌套Fragment使用方法,能够申城更好的界面效果
Framgent 做布局内容更新更方便,原来为了达到这一点要把多个布局放到一个activity里面,现在可以用Fragment代替,只有再需要的时候才加载Framgent,提高性能。
可以从startActivityForResult中接受到返回结果,但是view不能
Fragment的生命周期
你可以把fragment看做是acivity的模块化组件 它拥有自己的生命周期11个
依次是
onAttach(把Fragment对象跟Activity关联时)
onCreate(Fragment对象初始创建时)
onCreateView(方法用于创建和返回跟Fragment关联的view对象)
onActivityCreate(方法会告诉Fragment对象,他所依附的Activity对象已经完成了Activity.onCreate的执行完成)
onStart(页面可见)
onResume(页面处于活动状态,用户可与之交互)
onPause(页面处于暂停状态,但依然可见 但是不能与用户交互)
onStop(页面不可见,由于依赖的activity被终止或者Acitvity中正在执行一个修改Fragmetn对象的操作,而导致Fragment对象不再显示给用户时,系统会调用Fragmetn对象的onStop方法())
onDestroyView(方法用户清楚跟Fragment中的View对象关联的资源)
onDestory(Fragmetn对象的状态被最终清理完成以后,要调用onDestory方法)
onDetach(在Fragment对象不再跟它依附的Activity关联的时候 此方法立即调用)
补充其他方法.....................
onSaveInstanceStatue():保存当前Fragemnt 的状态(比如EditText键入的文本)即使被销毁重建 一样能恢复之前的文本
setUserVisibleHint():设置Fragment可见或者不可见时会调用此方法,在方法里面可以通过调用getUserVisbleHint()获得
Fragment生命周期执行流程
创建:setUserVisibleHint()->onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume();
退出应用:onPause()->onStop()->onDestroyView()-onDestroy()->onDetach() (人为退出 不会保存数据 不走onSaveInstanceStatus方法)