可以通过 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)实现了相互不影响。