Android笔记(三)多Activity活动的切换中的简化处理
多Activity实现的跳转简单实现
Activity定义移动的界面。在本例中,介绍多个活动之间的切换的简化通用的实现。在本例中,定义三个活动MainActivity、FirstActivity和SecondActivity.要求能从MainActivity分别切换到FirstActivity和SecondActivity,运行效果如下所示:

一、定义FirstActivity
class FirstActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent{FirstScreen()}}
}@Composable
fun FirstScreen(){Box(modifier= Modifier.fillMaxSize().background(Color.Green),contentAlignment = Alignment.Center){Text( text ="第一个界面",fontSize=30.sp,color = Color.Yellow)}
}
二、定义SecondActivity
class SecondActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent{SecondScreen()}}
}@Composable
fun SecondScreen(){Box(modifier= Modifier.fillMaxSize().background(Color.Blue),contentAlignment = Alignment.Center){Text( text ="第二个界面",fontSize=30.sp,color = Color.Yellow)}
}
三、MainActivity的实现跳转传统处理方式
定义交互,实现不同活动的跳转。
class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {ForCourseTheme {// A surface container using the 'background' color from the themeSurface(modifier = Modifier.fillMaxSize(),color = MaterialTheme.colorScheme.background) {MainScreen()}}}}
}@Composable
fun MainScreen(modifier: Modifier = Modifier) {val context = LocalContext.currentBox(contentAlignment= Alignment.Center){Column(horizontalAlignment = Alignment.CenterHorizontally){Button(modifier = Modifier.width(200.dp),onClick={val intent = Intent(context,FirstActivity::class.java)context.startActivity(intent)}){Text(text = "FirstActivity",fontSize = 18.sp)Icon(imageVector=Icons.Filled.ArrowForward,contentDescription = "第一个活动")}Button(modifier = Modifier.width(200.dp),onClick={val intent = Intent(context,SecondActivity::class.java)context.startActivity(intent)}){Text(text = "SecondActivity",fontSize = 18.sp)Icon(imageVector=Icons.Filled.ArrowForward,contentDescription = "第二个活动")}}}
}
在上述的MainActivity通过定义两个按钮实现对不同活动的跳转。
四、对MainActivity的优化处理
可以在MainActivity中调用自定义的按钮,通过按钮实现不同活动的跳转。这时定义的自定义按钮函数如下:
@Composable
fun <T> CustomButton(title:String,context: Context,classType:Class<T>){Button(modifier = Modifier.width(200.dp),onClick={val intent = Intent(context,classType)context.startActivity(intent)}){Text(text =title,fontSize = 18.sp)Icon(imageVector=Icons.Filled.ArrowForward,contentDescription = title)}
}
这里,定义了一个通用的函数CustomButton,并且指定一个类型变量T,函数参数接受参数,可以创建一个自定按钮,这个自定按钮完成了按钮的文本和图标的定义,并设置点击动作,使得点击动作能从不同活动进行跳转。修改上述的MainActivity活动要调用的MainScreen函数,这时代码为:
class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {ForCourseTheme {// A surface container using the 'background' color from the themeSurface(modifier = Modifier.fillMaxSize(),color = MaterialTheme.colorScheme.background) {MainScreen()}}}}
}@Composable
fun MainScreen(modifier: Modifier = Modifier) {val context = LocalContext.currentBox(contentAlignment= Alignment.Center){Column(horizontalAlignment = Alignment.CenterHorizontally){CustomButton(title = "FirstActivity", context =context , classType =FirstActivity::class.java)CustomButton(title="SecondActivity",context = context,classType = SecondActivity::class.java)}}
}
可以发现代码量减少。同样,如果定义的功能有类似的特征,可以考虑定义通用的函数或类,来达到一次定义,多次调用的目的。
相关文章:
Android笔记(三)多Activity活动的切换中的简化处理
多Activity实现的跳转简单实现 Activity定义移动的界面。在本例中,介绍多个活动之间的切换的简化通用的实现。在本例中,定义三个活动MainActivity、FirstActivity和SecondActivity.要求能从MainActivity分别切换到FirstActivity和SecondActivity&#x…...
vue打包压缩
参考 https://www.cnblogs.com/lafitewu/p/8309305.html 注意:方法1和方法2不能同时用 取消打包的map config/index.js的productionSourceMap设置为false 抽取js 将部分常用又比较大的组件直接抽取为一个单独的js 打开webpack.base.conf.js,在module.exports.entry中添加想…...
Mysql5.7大限将至升级Mysql 8.0过程记录(未完)
一、前言 时间很快,到2023年10月底,MySQL 5.7就到了它的EOL(End of Life),届时将不会提供任何补丁,无法应对潜在的安全风险;是时候和 MySQL 5.7 说再见了!!!&…...
多架构环境下docker-compose部署rocketmq单机模式—— 筑梦之路
接上篇linux上构建任意版本的rocketmq多架构x86 arm镜像——筑梦之路-CSDN博客,本文适用于x86、arm等多架构环境。 话不多说,直接上代码。 准备broker配置文件 #broker配置文件示例 cat data/broker/conf/broker.conf brokerClusterName DefaultClus…...
[Unity][VR]Passthrough2-创建一个基本的Passthrough应用
上一期我们对PassthroughXR项目做好了基本的项目设置,今天我们就开始构建一个基本的Passthrough应用。 我们还是从基本场景开始。先把默认的main camera删除。因为后续我们会引入OVR Rig对象,这个对象自带Camera用来实现VR视角。 在Project面板我们搜索OVR camera rig。看见…...
【Unity3D赛车游戏制作】设置面板搭建——UGUI复合控件
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
如何让 Source Insight 识别 AUTOSAR 宏定义 FUNC
有很多从事汽车电子行业的软件工程师在使用Source Insight阅览Classic AUTOSAR协议栈源码的时候, 发现函数名无法解析,基本上都变成了FUNC。 先说原因: AUTOSAR的协议栈为了实现多平台和编译器兼容,大量使用宏定义来代替关键字。…...
sts搭建springboot
sts搭建springboot 需要的软件 Apache-maven-3.3.9.rar 链接:百度网盘 请输入提取码 提取码:1xgj Spring-tool-suite-4-4.20.0.RELEASE-e4.29.0-win32.win32.x86_64.self-extracting.jar 链接:百度网盘 请输入提取码 提取码:p…...
解决react使用css module无法重写bootstrap样式的问题
react使用css module虽然能够解决样式污染,但是同时也失去了写css样式的灵活性,特别是:在.module.css文件中当子元素是非变量的静态class类(比如bootstrap), 此时使用css选择器对该子元素的样式不会起作用的 比如下面…...
自动驾驶软件和人工智能
自动驾驶汽车的核心在于其软件系统,而其中的机器学习和深度学习技术是使车辆能够感知、理解、决策和行动的关键。本文将深入探讨这些技术在自动驾驶中的应用,包括感知、定位、路径规划以及道路标志和交通信号的识别。 1. 机器学习和深度学习在自动驾驶中…...
堆叠、集群技术
1.堆叠、集群技术的概述 堆叠、集群简介 堆叠(iStack),将多台支持堆叠特性的交换机通过堆叠线缆连接在一起,从逻辑上虚拟成一台交换设备,作为一个整体参与数据转发。 集群(Cluster Switch System…...
SpringCould微服务保护01——Sentinel组件下载并使用
1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被…...
可扩展性对物联网管理系统有哪些影响?
可扩展性对于物联网管理系统的设计和开发非常重要,它直接影响着系统的性能、可靠性和能耗等方面,是评估一个系统优劣的重要因素之一。可扩展性对物联网管理系统的影响主要体现在以下几个方面: 设备兼容性:物联网管理系统的可扩展性…...
洗地机哪个品牌最耐用质量好?2023年最好用的洗地机
随着科技的发展,人们的生活越来越便利,就拿打扫卫生来说,现在越来越多人抛弃扫把、地拖,转而选择让清洁更加轻松的清洁家电,而洗地机就是这样一种让打扫卫生变得简单轻松的家电。近年来洗地机销量剧增,是目…...
计算机视觉(Computer Vision, CV)是什么?
什么是计算机视觉 近年来,计算机视觉 (Computer Vision,简称CV) 不断普及,已成为人工智能 (AI) 增长最快的领域之一。计算机视觉致力于使计算机能够识别和理解图像和视频中的物体和人。 计算机视觉应用程序使用来自传感设备、人工智能、机器…...
【【萌新的SOC学习之自定义IP核 AXI4接口】】
萌新的SOC学习之自定义IP核 AXI4接口 自定义IP核-AXI4接口 AXI接口时序 对于一个读数据信号 AXI突发读 不要忘记 最后还有拉高RLAST 表示信号的中止 实验任务 : 通过自定义一个AXI4接口的IP核 ,通过AXI_HP接口对PS端 DDR3 进行读写测试 。 S_AXI…...
设计模式-创建型模式
文章目录 一、单例模式1.饿汉式(1) 静态变量(2) 静态代码块(3) 枚举方式 2.懒汉式(1) 双检锁(2) 静态内部类 3.破坏单例模式(1) 序列化(2) 反射 4.解决单例模式被破坏(1) 序列化、反序列化破坏单例模式的解决方法(2) 反射破坏单例解决 二、工厂方法模式1.简单工厂模式2.工厂方法…...
golang中的RSA算法,加密解密,签名校验,导出公钥密钥,导入公钥密钥
RSA算法广泛应用与数据加密(比如 SSL 传输层加密),数字签名(比如支付宝的支付签名)。 1、加密解密 // encrypts the given message with RSA-OAEP func f1() {// random 用来生成随机的素数rsaPriviteKey, err : rsa…...
修炼k8s+flink+hdfs+dlink(四:k8s(二)组件)
一:控制平面组件。 控制平面组件会为集群做出全局决策,比如资源的调度。 以及检测和响应集群事件,例如当不满足部署的 replicas 字段时, 要启动新的 pod)。 1. kube-apiserver。 该组件负责公开了 Kubernetes API&a…...
Android约束布局ConstraintLayout流式Flow
Android约束布局ConstraintLayout流式Flow <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.…...
餐饮行业使用的企业管理软件
你是否遇到过门店食材库存数与实际不符,月底盘点要通宵?或者多门店营收数据混乱,财务结账要花半个月?据中国烹饪协会数据,68%的中大型餐饮企业因管理软件适配性差,每年额外损耗10%-15%的食材成本。今天这篇…...
Windows HEIC缩略图终极解决方案:3步解锁苹果照片完美预览
Windows HEIC缩略图终极解决方案:3步解锁苹果照片完美预览 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 还在为iPh…...
深度拆解Pulse算法三大剪枝策略:如何让你的路径搜索快10倍?
深度拆解Pulse算法三大剪枝策略:如何让你的路径搜索快10倍? 在解决复杂的组合优化问题时,如车辆路径规划(VRP)或旅行商问题(TSP),算法的效率往往决定了实际应用的可行性。Pulse算法作…...
STM32 HAL库实战:用CD74HC4067扩展模拟输入通道,附完整工程代码
STM32 HAL库实战:用CD74HC4067扩展模拟输入通道,附完整工程代码 在嵌入式开发中,模拟信号采集是常见需求,但MCU内置ADC通道数量往往有限。当面对多路传感器信号采集时,如何经济高效地扩展输入通道成为开发者必须解决的…...
MRI绕组结构设计及均匀度优化算法【附算法】
✨ 长期致力于MRI、均匀度、球面谐波、目标场、主被动匀场、优化算法、超导磁体、线性规划、非线性规划研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1࿰…...
【2026最新版Linux安装Mysql】CentOS 7 安装 MySQL 8.4.9 完整流程(RPM 手动安装+避坑+面试)
前言:本文记录在 CentOS 7 / RHEL 7 上,通过官网 RPM Bundle tar 包手动安装 MySQL 8.4.9(LTS) 的完整可复现流程。适合需要在老版本 CentOS 上部署 MySQL、为 Python/AI 后端或 Java 项目准备数据库环境的读者。读完可按步骤完成…...
Codex + SSH 远程运维实战:让 AI 管你的云服务器
Codex SSH 远程运维实战:让 AI 管你的云服务器从 Docker 部署到数据库调优,从日志排查到安全加固——用 Codex CLI 通过 SSH 管理云服务器的完整实战指南。一、为什么用 Codex 做运维? 传统运维的痛点: 半夜报警,睡眼…...
创业团队如何利用taotoken管理多项目ai调用成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 创业团队如何利用Taotoken管理多项目AI调用成本 对于同时推进多个AI应用原型开发的创业团队而言,一个常见的挑战是如何…...
从电路哲学到工程实践:无源与有源器件设计心法全解析
1. 从“人生如电路”到“玩电路设计,也可以这样有情怀”看到“人生如电路”这个比喻,很多电子爱好者或工程师都会心一笑。它把抽象的电子元件特性,巧妙地映射到我们每个人的学习、工作和生活状态上,确实挺有道理,也很有…...
从一块烧坏的板子说起:PCB电源平面设计中最容易被忽略的‘路径’与‘形状’陷阱
从一块烧坏的板子说起:PCB电源平面设计中最容易被忽略的‘路径’与‘形状’陷阱 那块烧焦的PCB板至今仍躺在我的抽屉里——12V电源轨上清晰的碳化痕迹,像一道闪电劈开了整个设计团队的自信。当客户退回第三批故障设备时,我们才意识到…...
