fragment研究

来源:互联网 发布:tk免费域名官网 编辑:程序博客网 时间:2024/06/05 07:29

1. fragment和activity一样,一个碎片(fragment)需要继承fragment,并实现里面的onCreateView()方法来返回这个Fragment的布局。

2. 3.0以下版本需要把fragment和fragmentActivity通过xml关联。

3. 3.0及以上版本使用普通的activity就行。

4.FragmentTransaction可以通过add、remove、replace方法来添加、删除、替换布局。

5. transaction通过fragmentManager获得。

6. transaction修改完布局后,需要commit。

7.如果替换或者删除一个Fragment然后让用户可以导航到上一个Fragment,你必须在调用commit()方法之前调用addToBackStack()方法添加到回退栈。如果你把这个Fragment添加到了回退栈,在提交之后这个Fragment是会被Stop而不是Destroyed。如果用户导航到这个Fragment,这个Fragment会被Restart而不是重新创建。如果你没有把它添加到回退栈,则在删除或者替换的时候它将被Destroyed

8. 两个单独的Fragment之间是不应该进行通信的。应该使用他们所存在的Activity作为沟通的纽带。

为了实现两个Fragment的交互,您可以在Fragment中定义一个接口,然后再这个接口中定义一个方法,在FragmentonAttach()方法中调用这个接口中的方法。然后让Activity实现这个方法来完成ActivityFragment之间的通信。

9. FragmentManager的作用:

1>使用方法findFragmentById()findFragmentByTag(),获取activity中已存在的fragment们。

2>使用方法popBackStack()activity的后退栈中弹出fragment们(这可以模拟后退键引发的动作)。

3>用方法addOnBackStackChangedListerner()注册一个侦听器以监视后退栈的变化

4>使用FragmentManager打开一个FragmentTransaction来执行fragment的事务,比如添加或删除fragment

10. Fragment要点
  1. Fragment作为Activity界面的一部分组成出现
  2. 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。
  3. 在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace())
  4. Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。
11. 创建Fragment,至少需要实现以下方法

  • onCreate()
    当创建fragment时, 系统调用该方法. 
    在实现代码中,应当初始化想要在fragment中保持的必要组件, 当fragment被暂停或者停止后可以恢复.
  • onCreateView()
    fragment第一次绘制它的用户界面的时候, 系统会调用此方法. 为了绘制fragment的UI,此方法必须返回一个View, 这个view是你的fragment布局的根view. 如果fragment不提供UI, 可以返回null.
  • onPause()
    用户将要离开fragment时,系统调用这个方法作为第一个指示(然而它不总是意味着fragment将被销毁.) 在当前用户会话结束之前,通常应当在这里提交任何应该持久化的变化(因为用户有可能不会返回).

原创粉丝点击