zoukankan      html  css  js  c++  java
  • Android Fragment (一)

    1、Fragment的产生与介绍  
       Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。

    2、Fragment的生命周期

      Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。

          

    可以看到Fragment比Activity多了几个额外的生命周期回调方法:

    • onAttach(Activity)                                                        当Fragment与Activity发生关联时调用
    • onCreateView(LayoutInflater, ViewGroup,Bundle)               创建该Fragment的视图
    • onActivityCreated(Bundle)                                                          当Activity的onCreate方法返回时调用
    • onDestoryView()                                                                           与onCreateView想对应,当该Fragment的视图被移除时调用
    • onDetach()                                                                                    与onAttach相对应,当Fragment与Activity关联被取消时调用
    注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现, 

    3、静态的使用Fragment

    • 继承Fragment,重写onCreateView决定Fragemnt的布局
    • 在Activity中声明此Fragment,就当和普通的View一样

    4、动态的使用Fragment

      使用FragmentManager对Fragment进行了动态的加载

    5、Fragment家族常用的API

      Fragment常用的三个类:

      • android.app.Fragment 主要用于定义Fragment
      • android.app.FragmentManager 主要用于在Activity中操作Fragment
      • android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~

      a、获取FragmentManage的方式:

        getFragmentManager() // v4中,getSupportFragmentManager (使用Android3.0以下的版本,需要引入v4的包)

      b、主要的操作都是FragmentTransaction的方法

        FragmentTransaction transaction = fm.benginTransatcion();//开启一个事务

      • transaction.add()           往Activity中添加一个Fragment
      • transaction.remove()     从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈,这个Fragment实例将会被销毁。
      • transaction.replace()     使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~
      • transaction.hide()          隐藏当前的Fragment,仅仅是设为不可见,并不会销毁
      • transaction.show()        显示之前隐藏的Fragment
      • detach()                        会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。
      • attach()                         重建view视图,附加到UI上并显示。
      • transatcion.commit()    提交一个事务

       注:commit方法一定要在Activity.onSaveInstance()之前调用。否则会Activity状态不一致:State loss错误。

    谢谢大家的关注,实例会在后面更新出来,但理论和实践一样重要。      Youth is like smoking. Smoke in the dust. Ash fall.

            

  • 相关阅读:
    hi.baidu.com 百度流量统计
    Autofac is designed to track and dispose of resources for you.
    IIS Manager could not load type for module provider 'SharedConfig' that is declared in administration.config
    How to create and manage configuration backups in Internet Information Services 7.0
    定制swagger的UI
    NSwag在asp.net web api中的使用,基于Global.asax
    NSwag Tutorial: Integrate the NSwag toolchain into your ASP.NET Web API project
    JS变量对象详解
    JS执行上下文(执行环境)详细图解
    JS内存空间详细图解
  • 原文地址:https://www.cnblogs.com/hxb2016/p/6169824.html
Copyright © 2011-2022 走看看