您的位置:首页 > 其它

Fragment-8.11

2015-08-11 09:32 211 查看
1、fragment 主要用来切换页面和管理view。


• 对于管理fragment,需要在activity中用getFragmentManager()取得它的实例。

•可以通过FragmentManager做一些事情, 包括: 使用findFragmentById()(用于在activity layout中提供一个UI的fragment)或findFragmentByTag()(适用于有或没有UI的fragment)获取activity中存在的fragment。

•将fragment从后台堆栈中弹出, 使用 popBackStack() (模拟用户按下BACK 命令)。

•使用addOnBackStackChangeListener()注册一个监听后台堆栈变化的listener。

2、fragment事物。

提交给activity的每一套变化被称为一个事务,可以使用在FragmentTransaction中的
API 处理。我们也可以保存每一个事务到一个activity管理的backstack,允许用户经由fragment的变化往回导航(类似于通过 activity往后导航)。

每一个事务都是同时要执行的一套变化。可以在一个给定的事务中设置你想执行的所有变化,使用诸如
add()、remove()和 replace()。然后, 要给activity应用事务,必须调用 commit()。

在调用commit()之前,你可能想调用
addToBackStack(),将事务添加到一个fragment事务的backstack。这个back stack由activity管理, 并允许用户通过按下 BACK按键返回到前一个fragment状态。

如果添加多个fragment到同一个容器,
那么添加的顺序决定了它们在view hierarchy中显示的顺序

当执行一个移除fragment的事务时, 如果没有调用 addToBackStack(), 那么当事务提交后,那个fragment会被销毁,并且用户不能导航回到它。有鉴于此,当移除一个fragment时,如果调用了addToBackStack(), 那么fragment会被停止,如果用户导航回来,它将会被恢复。另外,对于每一个fragment事务,你可以应用一个事务动画,通过在提交事务之前调用setTransition()实现。

调用 commit() 并不立即执行事务。恰恰相反,它将事务安排排期, 一旦准备好,就在activity的UI线程上运行(主线程)。如果有必要, 无论如何,你可以从你的UI线程调用executePendingTransactions()来立即执行由commit()提交的事务。但这么做通常不必要,除非事务是其他线程中的任务的一个从属。

警告:你只能在activity保存它的状态(当用户离开activity)之前使用commit()提交事务.

对于在fragment中添加ListView ,我用到的方法是:在相应fragment.java文件中先声明一个适配器,一步步记录太麻烦直接贴图:

当然还有xml文件:这是more.java的xml文件

下面是list_item.xml

这样的效果就是当切换到more这一页的时候显示的是一些列表(有图片,有标题,有内容)。

我就是想记录一下…………咋图片发不上来尼!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: