Fragment的生命周期,以及用法
Fragment 11个生命周期:
1.onAttach(Activity) 连接宿主Activity
2.onCreate(Bundle) 创建Fragment
3.onCreateView(LayoutInflater, ViewGroup, Bundle)创建Fragment视图
4.onActivityCreated(Bundle) 当宿主Activity的onCreate()执行完之后调用
5.onStart()
6.onResume()
7.onPause()
8.onStop()
9.onDestroyView() 销毁Fragment视图,与onCreateView对应
10.onDestroy() 销毁Fragment,与onCreate对应
11.onDetach() 与宿主Activity断开连接,与onAttach对应
Fragment生命周期的流程
1、当Activity创建时,调用Fragment的onAttach->onCreate->onCreateView->onActivityCreated
2、当Activity启动时,调用Fragment的onStart
3、当Activity获取焦点时,调用Fragment的onResume
4、当跳转到另一个Activity时,调用Fragment的onPause-->onStop
5、当返回Activity时,调用Fragment的onStart->onResume
6、销毁Activity时,调用Fragment的onDestroyView->onDestory->onDetach
Fragment简单使用
Fragment :在Activity中使用的碎片,有自己的布局、生命周期和输入事件
使用Fragment步骤:
1、创建类,并继承Fragment
2、重写Fragment的onCreateView()生命周期方法,并返回一个View
Fragment使用方式:
静态加载:
在布局文件中使用
动态加载:
使用FragmentManager:
作用:管理多个Frament之间的交互和传值的
android 3.0以前版本:当前Activity需要继承FragmentActivity并引入v4包
Activity.getFragmentManager() 3.0以后
FragmentActivity.getSupportFragmentManager() 3.0以前,引用v4包
FragmentTransaction beginTransaction() 获取Fragment事务处理对象
使用FragmentTransaction:
作用:Fragment的处理事处类,可以在指定的ViewGroup上增加、更新、删除Fragment
add(int containerViewId, Fragment fragment) 将Fragment对象增加到指定的控件上
replace(int containerViewId, Fragment fragment, String tag) 替换指定控件上的Fragment
commit() 提交本次事务处理
Fragment传值:
Bundle方式:
通过Fragment.setArguments(Bundle)传值,这种方式只适用还没有显示的Fragment
在Fragment中,通过Fragment.getArguments()获取Bundle
接口回调方式:
Fragment向宿主Activity回传数据:
1、在Fragment中创建公共接口,定义一个方法形式参数为Bundle
2、声明私有的接口变量
3、在onAttach方法中完成接口变量的实例化
4、宿主Activity实现Fragment中的接口,并实现回传方法
Fragment与回退栈:
作用:因在同一ViewGroup中显示多个Fragment,因此需要回退到上一次的Fragment时,需要回退栈
FragmentTransaction.addToBackStack(String name) 将当前的Fragment增加到回退栈中