• 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分享信息.

      

  • 相关阅读:
    兼容各浏览器,背景透明,内容不透明
    101 个 MySQL 的调节和优化的提示
    二手房买卖砍价最新攻略 帮你花少钱买好房
    “中国互联网100强”(2013)发布
    写入文件,创建xunlei批量任务
    武汉选房
    Java并发编程(十一)线程池的使用
    Retrofit 代理模式
    Java并发编程(十)阻塞队列
    不要在Android的Application对象中缓存数据!
  • 原文地址:https://www.cnblogs.com/lolita/p/3465754.html
Copyright © 2020-2023  润新知