首页 > 其他分享 >Activity和fragment是如何交互的

Activity和fragment是如何交互的

时间:2024-06-18 12:43:41浏览次数:17  
标签:生命周期 val fragment 方法 Fragment Activity 交互

Fragment 是 Android 中历史十分悠久的一个组件,在 Android 3.0 (API 级别 11)的时候推出,时至今日已成为 Android 开发中最常用的组件之一

在一开始的时候,引入 Fragment 的目的是为了在大屏幕(如平板电脑)上能够更加动态和灵活地设计界面,被定义为一个 **轻量级 Activity** 而进行设计。通过 Fragment 可以将整个界面划分为多个分散的区域块,且同个 Fragment 可以被应用于多个 Activity 中,从而实现界面的**模块化**并提高**可重用性**。随着 Android 系统的逐渐升级,系统功能越来越丰富,Fragment 因此也自然而然的就被添加了很多和 Activity 完全一样的 API。例如,想要跳转到某个 Activity 并获取返回值,Activity 和 Fragment 就都加上了`startActivityForResult`方法;在 6.0 的时候有了运行时权限,就都加上了`requestPermissions`方法;在 8.0 的时候有了画中画模式,就又都加上了`onPictureInPictureModeChanged`方法

随着系统更迭,Fragment 逐渐变得不再**轻量**,繁杂的功能让其越来越复杂,也导致以前的版本中暗坑无数,framework 层中的`android.app.Fragment`和 support 包中的 `android.support.v4.app.Fragment` 如今都被废弃不再维护了,也遗留了很多个没有解决的 bug,因此 Fragment 在长久以来并不能说是一个多么让开发者喜欢的组件

而到了如今 AndroidX & Jetpack 的年代,Google 官方也终于开始重新构思 Fragment 的定位,并对 Fragment 进行了大量重构。引用官方的说法:**我们希望 Fragment 成为一个真正的核心组件,它应该拥有可预测的、合理的行为,不应该出现随机错误,也不应该破坏现有的功能。我们希望挑个时间发布 Fragment 的 2.0 版,它将只包含那些新的、好用的 API。但在时机成熟之前,我们会在现有的 Fragment 中逐步加入新的并弃用旧的 API,并为旧功能提供更好的替代方案。当没人再使用已弃用的 API 时,迁移到 Fragment 2.0 就会变得很容易**

本篇文章就来介绍新时代 AndroidX Fragment 的方方方面,陆陆续续写了一万多字,有基础知识也有新知识,也许就包含了一些你还没了解过的知识点,看完之后你会发现 Fragment 如今好像真的在变得越来越好用了,希望对你有所帮助 

标签:生命周期,val,fragment,方法,Fragment,Activity,交互
From: https://www.cnblogs.com/aibot/p/18254111

相关文章

  • LiveCharts2:简单灵活交互式且功能强大的.NET图表库
    前言之前的文章中提到过ScottPlot、与oxyplot,这两个是比较常用的.NET图表库,今天介绍一款新的.NET图表库:LiveCharts2。LiveCharts2介绍LiveCharts2是一个现代化的数据可视化库,用于创建动态和交互式图表,支持.NET平台。它是LiveCharts的进化版,旨在提供更高性能、更灵活和更易......
  • AI + 3D:用单个图像和文本提示创建可交互的3D世界
    你是否曾经梦想过只需一张照片和一些简单的文字描述,就能立即进入一个生动的3D虚拟世界?今天,我们将介绍一个革命性的技术,它就像是一台神奇的3D场景制造机,能够根据你的想象快速构建出令人惊叹的虚拟空间。一、技术概览这项技术不仅仅是一个简单的图像到3D的转换工具,更是一个完整......
  • R语言动态广义相加模型GAM张量积交互项、傅立叶项、谐波回归分析季节性时间序列航空乘
    全文链接:https://tecdat.cn/?p=36497原文出处:拓端数据部落公众号季节性在真实的时间序列中是非常常见的。许多系列以周期性、规律性的方式变化。例如,冰淇淋销售在温暖的假期月份往往更高,而候鸟数量围绕年度迁徙周期强烈波动。由于季节性非常普遍,已经开发了许多时间序列和预测方......
  • 云租户数据交互时会遇到哪些问题?要怎么解决?
    云租户(CloudTenants)是指在云计算环境中使用云服务提供商所提供的资源和服务的用户。云租户数据交互时,通常会使用各种云计算平台和服务提供商所提供的工具和服务来进行数据传输。云租户在传输数据时可能会面临以下一些问题:1、安全性:数据传输过程中可能存在安全隐患,如数据泄露......
  • 怎样解决 Bash 与其他编程语言交互时出现的兼容性问题?
    要解决Bash与其他编程语言交互时出现的兼容性问题,可以考虑以下几个方法:使用标准化的输入输出:确保你的Bash脚本与其他编程语言之间使用标准化的输入输出格式进行通信。这可以包括使用标准输入和标准输出进行交互,并使用标准格式(如JSON或CSV)来传递数据。使用跨平台的工具或......
  • 冲刺06fragment_reg_chi_fil_inf.xml
    <?xmlversion="1.0"encoding="utf-8"?><FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent&......
  • python入门级经典交互式小程序
    今天学习做一个简单的交互式小程序知识点:1.对空列表进行添加元素,并分别打印每次添加的元素2.给while设置参数法进行循环3.for循环结合range()进行循环代码如下:klist=[]name=input("请输入你喜欢的明星:")while(name):  klist.append(name)  name=input......
  • Sandbox | 免费在线的生信交互学习平台
    Sandbox.bio是一个生物信息学沙盒平台,允许用户在安全隔离的环境中运行生物信息学实验。它提供各种工具和资源,包括数据库、算法和工具包,可用于各种生物信息学任务,例如数据分析、模型构建和机器学习。网站:https://sandbox.bio/可以从零练习Linux基本操作,以及生信相关的一些基础......
  • 鸿蒙ArkTS声明式开发:跨平台支持列表【触摸热区设置】触摸交互控制
    触摸热区设置适用于支持通用点击事件、通用触摸事件、通用手势处理的组件。说明:从APIVersion8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。属性名称参数类型描述responseRegionArray<[Rectangle]>[Rectangle]Rectangle对象说明从APIv......
  • 鸿蒙开发:应用组件跨设备交互(流转)【概述】
    流转概述场景介绍随着全场景多设备的生活方式不断深入,用户拥有的设备越来越多,不同设备都能在适合的场景下提供良好的体验,例如手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如在电视上输入文本相对移动设备来说是非常糟糕......