zoukankan      html  css  js  c++  java
  • android Fragment 用法小结

    Fragment 是android 3.0引入的新API,是作为Activity的子模块,必须嵌入Activity才能使用。

    Activity 与 Fragment的关系:

    一、依附性:

     1. Fragment 必须依附于Activity 。

     2.Activity 内可以包含多个Fragment,Fragment也可被多个Activity复用。

     3.Activity 暂停/销毁则其内的所有Fragment都暂停/销毁 (依附性)。

    4.Fragment可以响应自己的输入事件,并拥有自己的生命周期,但受其依附的Activity影响。

    5.Fragment 可调用getActivity()获得所在的Activity

    6.Activity 可调用FragmentManager的add()、remove()、replace()方法动态的添加、移除、替换Fragment。

    二、创建Fragment:

      1、继承Fragment或其子类。

      2、重写相关回调方法。

      3、掌握Fragment的生命周期,实现业务需求。

      4、添加Fragment(XML布局中添加Fragment 或动态加载):

        动态加载的方法:

          撰写代码将fragment添加到一个已存在的ViewGroup. 当activity运行的任何时候,

          都可以将fragment添加到activity layout.只需简单的指定一个需要放置fragment的ViewGroup.

          为了在你的 activity中操作fragment事务(例如添加,移除,或代替一个fragment),

          必须使用来自FragmentTransaction 的API.

           可以按如下方法,从你的Activity取得一个 FragmentTransaction 的实例:

    1 FragmentManager fragmentManager =getFragmentManager();
    2 FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction();


          然后你可以使用 add() 方法添加一个fragment,

           指定要添加的fragment和要插入的view.

    1 ExampleFragment fragment = newExampleFragment();
    2 fragmentTransaction.add(R.id.fragment_container,fragment);
    3 fragmentTransaction.commit();


           add()的第一个参数是fragment要放入的ViewGroup,

           由resource ID指定,第二个参数是需要添加的fragment.

           一旦用FragmentTransaction做了改变,为了使改变生效,必须调用commit().

      生命周期图:

        Fragment lifecycle

    三、实践心得:

      1. 重写回调函数时, 某些回调函数需要调用父类的回调函数。如:

                public void onDetach() {
                      super.onDetach();
                      Log.i("tag", "called onDetach...");
                }

              需要调用父类的回调函数,完成相关的操作,否则出错!

      2. Fragment与Activity需要通讯时,可在 fragment中定义一个回调的interface,

        并要求宿主activity实现它.当activity通过interface接收到一个回调,

        必要时它可以和在layout中的其他fragment分享信息.

      

  • 相关阅读:
    为什么数据库连接很消耗资源 转
    在Eclipse中编写servlet时出现"The import javax.servlet cannot be resolved" 问题解决办法
    multipart/form-data post 方法提交表单,后台获取不到数据
    java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法
    Eclipse/myEclipse 代码提示/自动提示/自动完成设置(转)
    PL/SQL破解方法(不需要注册码)
    Java
    tomcat开发环境配置
    文件操作权限
    Java版office文档在线预览
  • 原文地址:https://www.cnblogs.com/lolita/p/3465754.html
Copyright © 2011-2022 走看看