fragment和fragmentactivity解析(三)

2014-11-23 21:43:34 · 作者: · 浏览: 23
是能跟据用户的输入对 fragment 进行添加、删除、替换以及执行 其它动作的能力。提交的一组 fragment 的变化叫做一个事务。事务通过 FragmentTransaction 来执行。还可以把每个 事务保存在 activity 的后退栈中,这样就可以让用户在 fragment 变化之间导航(跟在 activity 之间导航一样)。

可以通过 FragmentManager 来取得 FragmentTransaction 的实例,如下:

FragmentManagerfragmentManager = getFragmentManager();
FragmentTransactionfragmentTransaction =fragmentManager.beginTransaction(); 

一个事务是在同一时刻执行的一组动作(很像数据库中的事务)。可以用 add(),remove(),replace()等方法构成事务,最后使用 commit()方法提交事务。在调用 commint()之前,可以用addToBackStack()把事务添加到一个后退栈中, 这个后退栈属于所在的 activity。有了它,就可以在用户按下返回键时,返回到 fragment 执行事务之前的状态。如 下例:演示了如何用一个 fragment 代替另一个 fragment,同时在后退栈中保存被代替的 fragment 的状态。

4、为Activity创建事件回调方法

在一些情况下, 你可能需要一个fragment与activity分享事件. 一个好的方法是在fragment中定义一个回调的interface, 并要求宿主activity实现它.当activity通过interface接收到一个回调, 必要时它可以和在layout中的其他fragment分享信息.
例如, 如果一个新的应用在activity中有2个fragment 一个用来显示文章列表(framgent A), 另一个显示文章内容(fragment B) 然后 framgent A必须告诉activity何时一个list item被选中,然后它可以告诉fragmentB去显示文章.

PS

最后在简单说说一个项目的大致实现,比如在手机上面实现了一个FragmentActivity + 多个fragment(登录,菜单,详细,账户等页面)。

1、每一个项目包括很多活动,每一个活动(FragmentActivity)相互不影响,每一个活动(FragmentActivity)包括很多子活动(fragment,一个页面),每一个子活动也相互不影响.

2、每一个活动(FragmentActivity)用FrameLayout来显示子活动,并且对活动进行堆栈管理,实现数据不用重复拉取,就跟搜狐新闻一样的效果.

3、登录(FragmentActivity):logo页面,登录页面

4、菜单(FragmentActivity):菜单选择页面(侧边栏,滑动),子菜单功能(每一个新闻页面)

5、其他(FragmentActivity):上传页面,下载页面等

每一个活动(FragmentActivity)实现了相互不影响。