Android基础——Fragment基础入门(一)

本文详细探讨了Android开发中Fragment的使用方法、生命周期管理以及优势特性,包括如何在不同屏幕尺寸下创建动态UI,Fragment与Activity的生命周期对比,以及Fragment在UI更新、动态内容展示和性能优化等方面的应用。

!!!不要在线程当中对UI进行任何操作。Android为开发人员提供了一种能够在线程中更新UI的方式,就是Hundler+Message+Thread。

!!!在使用V4包中的Fragment的时候,必须要使用FragmentActivty来加载,如果直接使用Activity的话,将会出现类型转换异常。

!!!使用< fragment >标签的时候,必须要给fragment设置id或者是Tag,否则抛异常。

2015/8/26 9:29:12

Fragment

  • Fragment是一个能独立显示界面及有自己独立的代码逻辑的组件,Fragment可以在界面中直接引用。
  • Fragment在你的应用中应当是一个模块化的可重用的组件,因为Fragment定义了自己的布局,已经通过自己的生命周期回调方法定义了它自己的行为,我们可以将一个Fragment放到多个Activity中。

Fragment的优点

  • Fragment可以使我们轻松的将Activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。
  • Fragment可以轻松创建动态灵活的UI设计,可以适应不同的的屏幕尺寸,从手机到平板。
  • Fragment是一个独立的模块,紧紧的与Activity绑定在一起,可以在运行中动态的插入、移除、替换等。
  • Fragment提供一个新的方式,让你在不同的设备上统一你的UI。
  • Fragment解决在Activity之间的切换不流畅,轻量级的切换。
  • Fragment替代TabActvity做导航,性能更好。
  • Fragment在4.2中新增嵌套Fragment使用方法,能够生成更好的界面效果。
  • Fragment做局部内容更新更方便,原来为了达到这一点需要将多个布局放到一个Activity中,现在可以将其放入Fragment中,需要的时候加载Fragment,提高性能。

Fragment的生命周期

  • 下面两图一张是Fragment的生命周期图,一张是Fragment与Activity的生命周期对比图。

  • onAttach:onAttach()方法,是在Fragment与Activity关联之后调用,初始化fragment参数可以从getArguments()获得。,但是,当Fragment附加给Activity之后,就无法再调用setArguments(),除了在最开始时,其它时间都无法向初始化参数添加内容。

  • onCreate:onCreate()方法,Fragement初次创建时调用。它看起来很像Activity的的onCreate()函数,但是这个只是用来创建Fragment的,此时的Activity还没有创建完成,因为Fragment也是Activity创建的一部分,所以,在这个方法内,我们若想使用Activity内的一些资源,是获取不到的。比如:获取同一个Activity中其它Fragment的控件。如果想要获取Activity中相关联的资源,必须在onActivityCreated()中获取。

    /**
    *如果把这段代码放到Fragment的onCreate()中,那么btnTry的值将会是NULL。
    *注意:getActivity()是有值的,因为一旦Activity与Fragment Attached就可以通过getActivity()来获取相关联的Activity的实例。
    */
    Button btnTry = getActivity().findViewById(R.id.btn_try);
    
  • onCreateView:在这个Fragment构造它的用户接口视图(即布局)时调用,在这里期望返回此Fragment的一个视图层次结构。使用LayoutInflater的inflate()方法来构造视图,代码如下:

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
            return inflater.inflate(R.layout.fragment3, container, false);
    }
    

inflate()的函数声明如下:

    public View inflate(int resource, ViewGroup root, boolean attachToRoot)

其中第一个参数代表我们的布局文件,第二个参数ViewGroup,一般写container,可以为NULL,但是如果父窗口值为NULL,意味着该Fragment不可见,因为它没有附加到任何的视图当中。

第三个参数boolean attachToRoot,一般为false,它的含义是是否将当前xml的根节点作为整个APP视图的根节点,如果为true,那么返回的View将是整个App视图架构的根节点,我们一般选择false,因为我们使用Fragment是依附于Activity的。Activity上可能还有其它控件,如果选择为true,那么整个Fragment以外的所有分支都将被删除,整个APP视图将只剩下Fragment。

  • onActivityCreated:在Activity的onCreate()方法执行完之后,会调用此方法,到这里的时候,Activity已经创建完成,在这个方法中,我们可以使用Activity的所有资源,把下面的代码放到这个方法中,将不会是null值。

    Button btnTry = getActivity().findViewById(R.id.btn_try);
    
  • onStart:到了onStart()的时候,Fragment对用户就是可见的,但用户还没有开始跟Fragment交互,在生命周期中可以看到,Fragment的onStart()和Activity的onStart()的过程是绑定的,意义即是一样的,以前我们写在Acitivy中这个方法来处理的代码,放入Fragment的这个方法中依然可以处理。

  • onResume:当这个Fragment对用户可见并且正在运行时调用,这是Fragment与用户交互之前的最后一个调用,从生命周期对比中,可以看出,Activity的和Fragment的这个方法是绑定的,意义相同,它依赖于Activity的Activity.onResume()方法,当OnResume()结束后,就可以正式与用户交互了。

  • onPause:此回调与Activity的OnPause()相绑定,与Activity的OnPause()意义一样。

  • onStop:这个回调与Activity的OnStop()相绑定,意义一样。已停止的Fragment可以直接返回到OnStart()回调,然后调用OnResume()。

  • onDestroyView:如果Fragment即将被结束或保存,那么撤销方向上的下一个回调将是onDestoryView()。会将在onCreateView创建的视图与这个fragment分离。下次这个fragment若要显示,那么将会创建新视图。这会在onStop之后和onDestroy之前调用。这个方法的调用同onCreateView是否返回非null视图无关。它会潜在的在这个视图状态被保存之后以及它被它的父视图回收之前调用。

  • onDestroy:当这个fragment不再使用时调用。需要注意的是,它即使经过了onDestroy()阶段,但仍然能从Activity中找到,因为它还没有Detach。

  • onDetach:Fragment生命周期中最后一个回调是onDetach()。调用它以后,Fragment就不再与Activity相绑定,它也不再拥有视图层次结构,它的所有资源都将被释放。

Fragment的特点

  1. Fragment能够将通用的功能(线程、联网)、界面统一的封装到一起,形成一个特定类,可以理解为Fragment就是一个小的Activity。
  2. Activity内部可以包含多个Fragment,相当于将一个Activity打散,可以由多个Fragment组合起来,可以形成复杂的功能。
  3. Fragment自己管理自己的界面显示,因此Activity在使用Fragment的时候,完全不需要管内部如何显示,只要能够引用就行了。
标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值