Fragement(碎片) 的使用
Fragment :在Activity中使用的碎片,有自己的布局、生命周期和输入事件
使用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对象增加到指定的ViewGroup控件上
replace(int containerViewId, Fragment fragment, String tag) 替换指定ViewGroup上的Fragment
commit() 提交本次事务处理
Fragment生命周期
11个生命周期方法
onAttach(Activity) 连接宿主Activity
onCreate(Bundle) 创建Fragment
onCreateView(LayoutInflater, ViewGroup, Bundle)创建Fragment视图
onActivityCreated(Bundle) 当宿主Activity的onCreate()执行完之后调用
onStart()
onResume()
onPause()
onStop()
onDestroyView() 销毁Fragment视图,与onCreateView对应
onDestroy() 销毁Fragment,与onCreate对应
onDetach() 与宿主Activity断开连接,与onAttach对应
同Activity的Created状态
同Activity相应的生命周期方法
同Activity的Destory
生命周期流程
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传值
Bundle方式
通过Fragment.setArguments(Bundle)传值,这种方式只适用还没有显示的Fragment
在Fragment中,通过Fragment.getArguments()获取Bundle
Activity的方式
在Activity中获取Fragment中的UI控件,并增加相关事件
在Activity声明公共方法,在Fragment中调用getActivity()并强转,则可以调用公共方法向其他Fragment控件传值
接口回调方式
Fragment与回退栈
作用:因在同一ViewGroup中显示多个Fragment,因此需要回退到上一次的Fragment时,需要回退栈
FragmentTransaction.addToBackStack(String name) 将当前的Fragment增加到回退栈中
相关类
ListFragment
定义:带有ListVeiw控件的Fragment
setListAdapter(BaseAdapter) 设置ListView显示内容的适配器
重写onListItemClick()方法处理LIstView的item点击事件
DialogFragment
定义:带有生命周期的对话框
创建类,并继承DialogFragment
重写onCreateView方法,并通过setStyle()设置对话框样式
重写onCreateDialog()方法,并返回Dialog
在Activity中通过自定义类的对象调用show(FragmentManager fm, String tag)
二选其一