Fragment 详情

Fragment (碎片)

“碎片”---Sub Activity

 

FragmentAndroid 3.0 (Honeycomb)被引入的。主要目的是为了给大屏幕(如平板电脑)上更加动态和灵活的UI设计提供支持。由于平板电脑的屏幕比手机的屏幕大很多,因此可用于组合和交换的UI组件的空间更大,利用Fragment实现此类设计的时,就无需管理对视图层次结构的复杂更改。

通过将 Activity 布局分成片段,您可以在运行时修改 Activity 的外观,并在由 Activity 管理的返回栈中保留这些更改。如果仅仅只有Activity布局,那是不够的,不仅在手机上有一套布局,同时在平板上还需要设计一套布局,那样维护起来也麻烦,代码上也有一定的冗余,对于APP包的大小也有一定的压力。Fragment的优势是布局在不同设备上的适配。

 

Fragment是什么:

简单来说,Fragment其实可以理解为一个具有自己生命周期的控件,只不过这个控件又有点特殊,它有自己的处理输入事件的能力,有自己的生命周期,又必须依赖于Activity,能互相通信和托管。

 

静态添加

在界面的xml,写控件视图fragment,在另写一个xml(就行listview似的),写一个类去去继承Fragment,  返回值就是解析视图(就是另一个视图),fragment里得去写class或者name这个的目的是绑定继承Fragment这个类。

 

 

 

动态添加

在界面的xml中,写控件视图FrameLayout帧布局,写两个分别给权重

在写两个类去继承Fragment 包是app,返回值都分别是解析所用的视图

在主java文件中

//FragmentManger:Activity内部用来与Fragment进行交互的接口
FragmentManager fragmentManager = getFragmentManager();
//开启一个事物
FragmentTransaction transaction = fragmentManager.beginTransaction();
left left = new left();
//将左侧的那个Fragment添加到R.layout.left这个id所代表的容器中。
transaction.add(R.id.left,left);
right right = new right();
transaction.add(R.id.right,right);
transaction.commit();

 

 

 

 

动态创建Fragment(掌握)

 

通过动态加载的方式来加载Framgnt,咱们在使用之前,先来看看下面的内容:

Fragment常用的三个类:

android.app.Fragment 主要用于定义Fragment

android.app.FragmentManager 主要用于在Activity中操作Fragment

android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~

 

a、获取FragmentManage的方式:

getFragmentManager() // v4中,getSupportFragmentManager

 

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()//提交一个事务

Activity与Fragment之间通信(掌握)

Android 为Fragment 和Activity之间的通信提供了两种机制:

       机制1:

     ①Fragment获取它所在的Activity

      调用Fragment的getActivity()方法即可返回它所在的Activity实例,之后我们就能够通过这个实例调用     

      findViewById(int) 方法了,也就是说,我们能够在Fragment中得到相关联的Activity的组件的信息 ,

      如:TextView textView = (TextView)getActivity().findViewById(R.id.textView) ;

      之后就能够获得TextView中的字符内容

       机制2:

    ①Activity向Fragment中传递数据

     Activity中创建Bundle数据包,并调用Fragment对象的setArguments(Bundle bundle)方法

    (也就是说我们得要首先创建一个Fragment对象之后才能够用这个对象调用setArgument(Bundle)方法)即     

     可将Bundle数据包传递给该Fragment对象;之后在Fragment类中调用getArguments()方法就能够获得这个  

     Bundle包.这个方法一般用在Activity加载一个Fragment的时候,由于当我们加载一个Fragment的时候就想

     要将一些数据传给Fragment对象,来对Fragment对象进行初始化,所以在Fragment中的onCreate()或者  

     onCreateView()方法中调用getArgument()方法来获得这个Bundle对象

    ②Fragment实时的向Activity通信

      实际就是使用接口回调的机制,也就是在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity  

      类实现这个接口,这样Fragment就能够调用这个回调方法,将数据传给Activity中

 

 

 

 

 

 

 

 

Fragment的生命周期

onAttach    附加,绑定

onCreate    创建

onCreateView   创建视图

onActivityCreated   

onStart    开始

onResume   获取焦点

Onpause    失去焦点

onStop     暂定

onDestroyView   销毁是u

onDestroy   销毁

onDetach    分离

Fragment的生命周期的执行顺序

创建:

Activity-onCreate

Fragment-onAttach

Fragment-onCreate

Fragment-onCreateView

Fragment-onActivityCreated

Activity-onStart

Fragment-onStart

Activity-onResume

Fragment-onResume

点击返回键:

Fragment-onPause

Activity-onPause

Fragment-onStop

Activity-onStop

Fragment-onDestroyView

Fragment-onDestroy

Fragment-Detach

Activity-onDestroy

 

 

Activity Fragment

FragmentActivity 再死

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值