在这里插入图片描述
三三要成为安卓糕手

上一篇文章,我们是在xml中静态添加fragment,但是一些修改或者其他事情是做不了的;

本章我们达成在java代码中灵活添加、删除、替换fragment操作

一:核心代码展示

简单做一个这种页面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

public class FragmentActivity extends AppCompatActivity implements View.OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_fragment);findViewById(R.id.btn_add).setOnClickListener(this);findViewById(R.id.btn_remove).setOnClickListener(this);findViewById(R.id.btn_replace).setOnClickListener(this);}@Overridepublic void onClick(View v) {MyFragment myFragment = new MyFragment();//获取管理器,开始事务FragmentManager fragmentManager = getSupportFragmentManager();FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();if(v.getId() == R.id.btn_add){//获取管理器,开始事务fragmentTransaction.add(R.id.fcv, myFragment,"tag_myFragment");//提交事务fragmentTransaction.commit();} else if (v.getId() == R.id.btn_remove) {//方式二:id移除,优先用这个Fragment fragment = fragmentManager.findFragmentById(R.id.fcv);fragmentTransaction.remove(fragment);fragmentTransaction.commit();//方式一:直接移除
//            fragmentTransaction.remove(myFragment);//方式三:tag移除法
//            fragmentTransaction.remove(fragmentManager.findFragmentByTag("tag_myFragment"));} else if (v.getId() == R.id.btn_replace) {fragmentTransaction.replace(R.id.fcv,new BlueFragment(),"tag_BlueFragment");fragmentTransaction.commit();}}
}

1:三种移除方式

  • 直接移除new出来的fragment
  • id移除,通过FragmentContainer去移除,泛用性更好最推荐。理解成所有Fragment都会抵达的总站,在这里管理更方便
  • tag移除,这是Fragment的一个标签

2:获取管理器和开始事务

这两行代码尽量不要提取成方法成员变量,避免一些未知错误

        //获取管理器,开始事务FragmentManager fragmentManager = getSupportFragmentManager();FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();fragmentTransaction.add(R.id.fcv, myFragment,"tag_myFragment");

在这段代码中,通过 fragmentTransaction.add(R.id.fcv, myFragment, "tag_myFragment") 这行代码,是将 myFragment 这个 Fragment 实例添加到了 idfcv 的容器,从而实现把 myFragment 对应的布局关联到 R.id.fcv 这个容器里,让 myFragment 的界面能够在该容器所在的位置显示出来。

一句话总结:把myFragment布局关联到R.id_fcv这个FragmentContainer中

(1)getSupportFragmentManager()

自定义启动类继承AppCompatActivity;又继承FragmentActivity

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

getSupportFragmentManager()是FragmentActivity中提供的方法在当前类中直接获取Fragment管理器

(2)使用事务

开始事务

将当前某个Activity关联控件当中

第一个参数,第二个参数:你要添加的是哪个Fragment,第三个参数:要添加的Fragment在FragmentManager当中的TAG是什么(性能更好)

3:效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4:注意事项

每次处理完事务Transaction后记得要commit

二:替换的Fragment代码展示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1:为什么更推荐用id移除

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

添加红色,替换为蓝色,移除掉蓝色,就会出现bug;因为当前不是tag_myFragment了而是蓝色view,那还移除个蛋

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MiniOB环境部署开发(使用开源学堂)

整体思路: 1.使用开源学堂在线编程环境开发MiniOB编译环境 2.使用vscode进行代码调试和开发以及上传到仓库 MiniOB源码:https://github.com/oceanbase/miniob MiniOB文档:MiniOB 介绍 - MiniOB 数据库大赛官网:OceanBase 社区…

09_常用内置模块进阶

第9课:常用内置模块进阶 课程目标 深入学习Python常用内置模块掌握collections、itertools、functools等模块学习json、csv、pickle等数据处理模块 1. collections模块 1.1 Counter类 from collections import Counter# 统计元素出现次数 text "hello world p…

⚡ Ranger 基础命令与功能详解

📌 1. Ranger简介 Ranger(游侠)是一款 Linux 专用的 指令式文件管理器,其操作风格类似 Vim,通过输入指令即可完成目录跳转、文件编辑、移动、复制等操作。 相比于 mc(Midnight Commander)&…

CUDA安装教程(包括cuDNN的教程)一个博客带你了解所有问题

前言 windows10 版本安装 CUDA ,首先需要下载两个安装包 CUDA toolkit(toolkit就是指工具包)cuDNN 注:cuDNN 是用于配置深度学习使用 官方教程 CUDA:Installation Guide Windows :: CUDA Toolkit Documentation …

ArkTS 语言全方位解析:鸿蒙生态开发新选择

在鸿蒙生态蓬勃发展的当下,一款高效、健壮的开发语言成为开发者的迫切需求。ArkTS 语言应运而生,作为鸿蒙生态的核心应用开发语言,它在 TypeScript(简称 TS)基础上进行创新扩展,为开发者打造高性能、易维护…

JavaScript性能优化实战:从瓶颈识别到极致体验

文章目录JavaScript性能优化实战:从瓶颈识别到极致体验1. 引言:为什么JavaScript性能至关重要1.1 性能对用户体验的影响1.2 JavaScript性能瓶颈的多样性2. JavaScript内存管理优化2.1 JavaScript内存模型详解2.2 垃圾回收机制与优化策略2.3 内存分析实战…

批量归一化:不将参数上传到中心服务器,那服务器怎么进行聚合?

联邦批量归一化(FedBN) 是一种联邦学习客户端本地模型优化算法。它的核心思想是:在联邦学习的客户端本地训练过程中,保留并独立更新批量归一化层(Batch Normalization, BN)的参数,而不将这些参数…

Qt中使用MySQL数据库

一、MySQL 入门 核心概念 在 QT 中操作数据库,主要使用两个模块: QSqlDatabase:代表一个数据库连接。 QSqlQuery:用于执行 SQL 语句(如 SELECT, INSERT, UPDATE, DELETE)并处理结果。 环境准备 在编写代码之前,你需要确保系统已具备以下条件: 1. 安装 MySQL 从 M…

Android - 统一资源标识符 Uri

一、概念URI(Uniform Resource Identifier)统一资源标识符,用于标识资源的字符串(如图片、网页、文件、应用等)。1.1 与 URL 的区别URL(统一资源定位符)是 URI(统一资源标识符&#…

开源 AR 眼镜怎么选?OpenGlass ,OSSG,cheApR 分析推荐

开源项目横评(看完你会知道自己属于哪一类) 1)OpenGlass:最低成本跑通“能用的AI眼镜” 卖点:用不到$25的通用元件,把任意普通眼镜改造成“可黑客化”的智能眼镜;能录制、识别、翻译、记人等。…

RAGFlow (一) 开发环境搭建

本文介绍如何在Windows上进行RAGFlow开发环境搭建 一. 环境准备 前提条件 CPU ≥ 4 核内存 ≥ 16 GB磁盘 ≥ 50 GBDocker ≥ 24.0.0 & Docker Compose ≥ v2.26.1 安装Docker Desktop为wsl安装Ubuntu 1.启用 WSL2​​(Windows Subsystem for Linux&#xff09…

k8sday13数据存储(1.5/2)

目录 二、高级核心存储 1、PV 1.1配置文件 ①、访问模式(accessModes) ②、回收策略(persistentVolumeReclaimPolicy) ③、存储类别 ④、状态(Status) 1.2创建测试 ①、准备NFS环境 ②、创建PV …

【力扣 Hot100】每日一题

D15 鲁迅曾说,尽量每天都让自己充实一点,你可以刷一个小时的短视频,打一个小时的王者荣耀,但尽量再留一个小时出来读一下书、教程、博客,让自己的大脑保持活跃,而不是垃圾场。如果真的没有事情做&#xff…

Sql server的行转列

业务场景:有如下一张表,希望汇总成下面的查询结果。 原始数据表 EmployeeTable:一个员工身兼多个岗位。 Employee Role Level 张三 工程师 3 张三 经理 5 李四 工程师 2 李四 主管…

某市-2025【网安·论道】决赛-misc1-翻转-wp

题目给了个图片以及一句提示 “斯蒂xx会帮助你” 直接就能想到 ste 开头的那几个工具,但是我比赛时候电脑什么ste开头的工具都没装,只能回来做了。 └─$ exiftool x.jpeg ExifTool Version Number : 13.00 File Name : …

[系统架构设计师]大数据架构设计理论与实践(十九)

[系统架构设计师]大数据架构设计理论与实践(十九) 一.传统数据处理系统的问题 1.传统数据库的数据过载问题 传统应用的数据系统架构设计时,应用直接访问数据库系统。当用户访问量增加时,数据库无 法支撑日益增长的用户请求的负载&…

UniAD

1. 算法动机及开创性思路 1)UniAD算法简介 算法全称:Planning-oriented Autonomous Driving核心特点: 统一框架整合感知、预测、规划模块CVPR 2023最佳论文采用查询(query)方式连接各模块 名称含义: Unified:统一多模块…

ESP-NOW详解(esp-idf)

esp-now目前主要支持单播和广播,广播地址为ff:ff:ff:ff:ff:ff,广播可以向范围内所有拥有esp-now接收的设备发送数据 注意事项,网络模式是可以设置网络mac地址的,在单播中,目标设备网络模式选择为ap时,mac地址会发生改…

`strlen` 字符串长度函数

1) 函数的概念与用途 strlen 是 C 语言标准库中最基础且使用最频繁的字符串处理函数之一,它的名字来源于"string length"(字符串长度)。这个函数的功能非常明确:计算一个以空字符结尾的字符串的长度。 可以将 strlen 想…

TorchInductor - Introduction

PyTorch 2.x通过TorchDynamo通过Python Bytecode的动态变换实现了图捕获功能,需要搭配一个Compiler Backend完成图编译。 Pytorch尝试集成了多个后端,并使用一个轻量级的autotuner来选择最优的后端图编译结果。这个解决方案存在2个问题: 这…