您的位置:首页 > 移动开发 > Android开发

android fragment

2015-12-20 06:51 246 查看
Fragment的生命周期





onAttach(Activity)

当Fragment与Activity发生关联时调用。

onCreateView(LayoutInflater, ViewGroup,Bundle)

创建该Fragment的视图

onActivityCreated(Bundle)

当Activity的onCreate方法返回时调用

onDestoryView()

与onCreateView想对应,当该Fragment的视图被移除时调用

onDetach()
与onAttach相对应,当Fragment与Activity关联被取消时调用

Fragment常用的三个类:

android.app.Fragment 主要用于定义Fragment

android.app.FragmentManager 主要用于在Activity中操作Fragment

android.app.FragmentTransaction 保证一些列Fragment操作的原子性

Fragment常用的API

获取FragmentManage的方式:

getFragmentManager()
FragmentTransaction的方法:

transaction.add()

往Activity中添加一个Fragment

transaction.remove()

从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈
,这个Fragment实例将会被销毁

transaction.replace()

使用另一个Fragment替换当前的,实际上就是remove()然后add()

transaction.hide()

隐藏当前的Fragment,仅仅是设为不可见

transaction.show()

显示之前隐藏的Fragment

detach()

会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护

attach()

重建view视图,附加到UI上并显示。
transatcion.commit() //提交一个事务
FragmentTransaction.addToBackStack(String)
添加一个Fragment事务到回退栈

注意:
Activity状态不一致:State loss这样的错误。主要是因为:commit方法一定要在Activity.onSaveInstance()之前调用。

Fragment与Activity通信:
1:Activity中包含自己管理的Fragment的引用,可以通过引用直接访问所有的Fragment的public方法
2:
每个Fragment都有一个唯一的TAG或者ID,可以通过
3:
Fragment中可以通过getActivity得到当前绑定的Activity的实例,然后进行操作

Fragmeny与ActionBar和MenuItem集成:
1:
在Fragment的onCreate中调用 setHasOptionsMenu(true);
2:
在Fragment子类中实现onCreateOptionsMenu
3:
在Fragment中处理MenuItem的点击,也可以实现onOptionsItemSelected;(Activity也可以直接处理该MenuItem的点击事件)

没有布局的Fragment的作用:
[b]没有布局文件Fragment实际上是为了保存,当Activity重启时,保存大量数据准备的[/b]

动态,静态使用fragment:
/article/1336252.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: