Android 布局 Fragment

news2024/11/8 18:33:44

Android 布局 Fragment

  • Fragment出现的初衷
  • 生命周期
      • onCreate()
      • onPause()
      • onAttach()
      • onCreateView()
      • onActivityCreated()
      • onDestroyView()
      • onDetach()
    • 您可能还想扩展几个子类,而非 Fragment 基类:
      • DialogFragment
      • ListFragment
      • PreferenceFragmentCompat
  • 同系列文章推荐

Fragment出现的初衷

Fragmen是在Android3.0(api11)的时候引入的,一开始的目的是为了大屏幕(如平板电脑)。
当时的Android手机普遍较少,在Android使用上面看起来的正常的界面,在平板电脑看起来可能会有点奇怪
比如,会留出比较大的空白的空间,所以,为了解决这种问题,谷歌在Android 3.0的时候推出了Fragment。
我们来看一个例子,新闻应用可以使用一个Fragment在左侧显示文章列表,
使用另一个Fragment在右侧显示文章 — 两个Fragment并排显示在一个 Activity 中,
每个Fragment都拥有自己的一套生命周期回调方法,并各自处理自己的用户输入事件。
因此,用户无需使用一个 Activity 来选择文章,然后使用另一个 Activity 来阅读文章,
而是可以在同一个 Activity 内选择文章并进行阅读。详情如下图所示

在这里插入图片描述

生命周期

如要创建片段,您必须创建 Fragment 的子类(或已有其子类)。Fragment 类的代码与 Activity 非常相似。它包含与 Activity 类似的回调方法,如 onCreate()、onStart()、onPause() 和 onStop()。实际上,如果您要将现有 Android 应用转换为使用片段,可能只需将代码从 Activity 的回调方法移入片段相应的回调方法中。

通常,您至少应实现以下生命周期方法:

onCreate()

系统会在创建片段时调用此方法。当片段经历暂停或停止状态继而恢复后,如果您希望保留此片段的基本组件,则应在您的实现中将其初始化。
onCreateView()
系统会在片段首次绘制其界面时调用此方法。如要为您的片段绘制界面,您从此方法中返回的 View 必须是片段布局的根视图。如果片段未提供界面,您可以返回 null。

onPause()

系统会将此方法作为用户离开片段的第一个信号(但并不总是意味着此片段会被销毁)进行调用。通常,您应在此方法内确认在当前用户会话结束后仍然有效的任何更改(因为用户可能不会返回)。
大多数应用至少应为每个片段实现这三个方法,但您还应使用几种其他回调方法来处理片段生命周期的各个阶段。处理片段生命周期部分对所有生命周期回调方法做了更详尽的阐述。

onAttach()

在片段已与 Activity 关联时进行调用(Activity 传递到此方法内)。

onCreateView()

调用它可创建与片段关联的视图层次结构。

onActivityCreated()

当 Activity 的 onCreate() 方法已返回时进行调用。

onDestroyView()

在移除与片段关联的视图层次结构时进行调用。

onDetach()

在取消片段与 Activity 的关联时进行调用。
在这里插入图片描述
请注意,用于实
现依赖组件生命周期的代码应放在组件本身内,而非直接放在片段回调实现中。请参阅使用具有生命周期感知能力的组件处理生命周期,了解如何让您的依赖组件获得生命周期感知能力。

您可能还想扩展几个子类,而非 Fragment 基类:

DialogFragment

显示浮动对话框。使用此类创建对话框可有效代替使用 Activity 类中的对话框辅助方法,因为您可以将片段对话框纳入由 Activity 管理的片段返回栈,从而使用户能够返回清除的片段。

ListFragment

显示由适配器(如 SimpleCursorAdapter)管理的一系列项目,类似于 ListActivity。该类提供几种管理列表视图的方法,如用于处理点击事件的 onListItemClick() 回调。(请注意,显示列表的首选方法是使用 RecyclerView,而非 ListView。在此情况下,您需在列表布局中创建包含 RecyclerView 的片段。如需了解具体操作方法,请参阅使用 RecyclerView 创建列表)

PreferenceFragmentCompat

以列表形式显示 Preference 对象的层次结构。此类用于为您的应用创建设置屏幕。

https://developer.android.google.cn/guide/components/fragments?hl=zh_cn

同系列文章推荐

.net开发安卓入门 - 环境安装
.net开发安卓入门 - Hello world!
.net开发安卓入门 - 基本交互(Button,输入EditText,TextView,Toast)
.net开发安卓入门 - 布局与样式
.net开发安卓入门 - Activity
.net开发安卓入门 - Notification(通知)
.net开发安卓入门 - 四大基本组件
.net开发安卓入门 - Service (服务)
.net开发安卓入门 - 打包(.apk)
.net开发安卓入门 - ImageView 显示网络图片
.net开发安卓入门-文件操作与配置操作
.net开发安卓入门-Dialog
.net开发安卓入门-自动升级(配合.net6 webapi 作为服务端)
vs2022 实现无线调试安卓(Windows)
.net开发安卓从入门到放弃
.net开发安卓从入门到放弃 最后的挣扎(排查程序闪退问题记录-到目前为止仍在继续)
.net开发安卓入门 -记录两个问题处理办法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.3.2单链表的插入删除

按位序插入(带头结点) 将第i-1个结点的指针指向第i个结点。 头节点看作是第0个结点。 s->datae //设定s指针的数据域为e s->nextp->next //将p指针指向的位置赋值给s指针指向的位置 p->nexts //再将s的数据域赋值给p指针指向的位置…

浅析分布式理论的CAP

大家好,我是易安! 今天让我们来聚焦于分布式系统架构中的重要理论——CAP理论。在分布式系统中,可用性和数据一致性是两个至关重要的因素,而CAP理论就是在这两者之间提供了一种权衡的原则,帮助我们在设计分布式系统时进…

MATLAB基于BP神经网络的光伏发电太阳辐照度预测(源码链接在文末)

光伏发电功率主要受太阳辐照度影响,所以准确预测太阳辐照度对光伏功率预测十分重要。程序采用小波分解先对辐照度数据进行分解,然后再用bp神经网络对分解的辐照度数据分别预测,再组合作为最后的预测结果。 人工神经网络(Artificial Neural …

研0进阶式学习---数据库1

目录Excel和数据库数据库的分类数据库的举例数据库基本结构数据库管理系统xampp、Navicat、MySQL基础知识与界面展示数据库基本连接步骤Excel和数据库 Excel和数据库都是用来存储数据的工具,但它们有以下区别和联系: 区别: 数据类型&#…

Java实现内网穿透

使用场景 1、当公司的一些系统功能使用了第三方服务时,通常第三方会回调我们的接口。在对接阶段,为了方便debug,我们肯定希望能回调到我们本地电脑上来。 2、当你在公司想访问部署在家里电脑的服务或者文件时。 3、当你的外地同事想访问你…

搭建nginx反向代理实现动静态分离

搭建nginx反向代理实现动静态分离一、实现高可用动静分离二 实验步骤2.1 安装nginx和开启路由转发2.2 实现lvs负载均衡2.3 实现动态网页功能2.4 实现nginx反向代理2.5 重启服务网页查看一、实现高可用动静分离 1、部署目的 ①用户访问业务时访问虚拟ip由lvs负责转发请求到业务…

LAMP及论坛搭建

1.编译安装apache 关闭防火墙,将安装Apache所需软件包传到/opt目录下 systemctl stop firewalld.service setenforce 0[rootlocalhost opt]# lsapr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2安装环境依赖包 yum -y install gcc gcc-c make pc…

淘宝商品数据分析怎么操作?从哪些方面下手?

说起淘宝上面的商品可谓是成千上万,因此要是想对这些商品进行数据分析的话,也是需要一些技能的,并不是所有的数据都特别重要,我们需要学会选择比较重要的数据来进行分析。详细内容还请各位接着往下看! 一、根据淘宝指数分析以下相…

【JSP学习笔记】2.JSP 结构、生命周期及语法

前言 本章介绍JSP的结构、生命周期及语法。 JSP 结构 网络服务器需要一个 JSP 引擎,也就是一个容器来处理 JSP 页面。容器负责截获对 JSP 页面的请求。本教程使用内嵌 JSP 容器的 Apache 来支持 JSP 开发。 JSP 容器与 Web 服务器协同合作,为JSP的正…

springboot读取yml文件中的list列表、数组、map集合和对象方法实例

目录前言application.yml定义list集合application.yml定义数组类型总结 前言 springboot配置文件yml类型简单的风格,十分受大家的欢迎,支持字符string类型,支持列表list类型,支持集合map类型,支持数组array类型&#x…

MySQL数据库 - 基础篇

本文文章基于黑马《MySQL》课程所做的笔记 1、基础篇 1.1、MySQL概述 数据库相关概念 名称全称简介数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程…

ijkplayer 编译增加支持更多的音视频格式

ijkplayer是B站开源的一款基于ffmpeg的移动端播放器。但为了减少播放器的体积,很多音视频的格式播放默认都是不支持的,需要自己下载ijkplayer源码进行编译。这里以mac环境下android为例,简述ijkplayer的编译过程,以及为了支持更多…

最新版本 Stable Diffusion 开源 AI 绘画工具之图生图进阶篇

✨ 目录🎈 图生图基本参数🎈 图生图(img2img)🎈 涂鸦绘制(Sketch)🎈 局部绘制(Inpaint)🎈 涂鸦蒙版(Inpaint sketch)&…

Adams2020软件安装教程

目录 一、软件简介 二、软件下载 三、软件安装 一、软件简介 Adams是一款多领域仿真软件,可以对机械、电子、流体、化学等系统进行建模、仿真和分析。Adams具有强大的动力学分析功能,可以模拟多种复杂系统的运动、力学、热力学和控制行为,包…

点云目标检测:open3d多窗口联动可视化

多个模型之间的对比除了指标之外,还需要可以直观的对比可视化结果,这次介绍一下如何使用open3d同时打开两个窗口分别加载两个模型的结果,同时实现两个窗口的联动,也就是当一个窗口拖动或者缩放时另外一个窗口也跟着做同样的变换。 点云可视化:使用open3d实现点云连续播放这…

nginx虚拟主机

一、基于域名的nginx虚拟主机 1、基于域名的nginx虚拟主机的操作步骤 1.1 为虚拟主机提供域名和IP的映射(也可以使用DNS正向解析) echo "192.168.2.66 www.xkq.com www.wy.com" >> /etc/hosts1.2 为虚拟主机准备网页文档 mkdir -p /var/www/html/ly/ mkdir…

第一章 深度学习入门之流程初体验

效果图 文章中采用的是棋盘格数据,这张图里面用的是开源的模型,可以用于测试,此图为最终效果,加载mp4视频,通过opencv读取图像,传递到infer接口,进行推理识别,利用opencv显示出来 …

比较好的文档翻译软件-哪个翻译软件最精准

免费语言翻译软件可以帮助用户快速准确地翻译语言,其主要作用如下: 辅助语言学习:语言翻译软件可以帮助用户学习语言,让用户更好地理解在不同语言之间的差异,从而使语言学习更加高效。 翻译外语内容:语言翻…

Java中常见的几种分布式锁介绍及实战应用

文章目录什么是锁?场景描述代码示例总结Java中单体应用锁的局限性&分布式锁前言互联网系统架构的演进单体应用锁的局限性什么是分布式锁分布式锁的设计思路目前存在的分布式的方案Java中锁的解决方案前言乐观锁 与 悲观锁公平锁 与 非公平锁总结分布式锁设计如何…

Python基础教程:__call__用法

人生苦短,我用python python 安装包资料:点击此处跳转文末名片获取 __call__可以使得方法变成可被调用对象; (PS:python中的方法和普通函数有点区别: 方法的第一个参数是类实例) 允许一个类的实例像函数一样被调用。 实质上说…