【Android关键字】startActivityForResult/onActivityResult/setResult方法的使用
最近在写一个安卓程序,在程序里需要用到startActivityForResult这个Intent操作关键字,与该关键字有关的还有onActivityResult和setResult。这里对其用法进行一个总结。
三者在API中的形式
//startActivityForResult与startActivity类似,只不过该方法可将方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。
startActivityForResult(Intent intent, int requestCode)
onActivityResult(int requestCode, int resultCode, Intent data)
setResult(int resultCode, Intent data)
三者组合的作用
通过API中的情况,基本可以推出三者的操作逻辑:假设现在有两个activity A和B,假如我们从A跳转到B【startActivityForResult实现】,再B完成相应的工作以后finish掉B,然后传数据给A【setResult实现】,A在接受到数据以后做相应的操作【onActivityResult实现】。其操作逻辑可以用以下代码来表示:
A:
//启动B
Intent intent = new Intent();
intent.setClass(A.this, B.class);
//1是我们自己定义常量,用于标注由A->B这个活动,对应下面使用到的onActivityResult中的requestCode
startActivityForResult(intent, 1);
B:
//do something
//此方法中的 1 表示onActivityResult的resultCode,一般也用 RESULT_OK(1)和RESULT_CANCELED(0)表示,data一般为 Intent类型的数据,也可以为 null
setResult(1, data);
finish();
然后由活动B再返回A执行onActivityResult方法。
代码示例
ActivityA.Java中的代码:
button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent("com.example.activitytest.ACTTON_START");startActivityForResult(intent,1);//打开活动B}});
ActivityB.java代码
在活动B中用 setResult 方法设置好要返回的结果,setResult()接收两个参数,第一个是活动返回处理结果,一般只是用RESULT_OK和RESULT_CANCELED,另一个这是将带有数据的Intent传递回去。
button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent();intent.putExtra("data_return","测试一下");//要返回的结果setResult(RESULT_OK,intent);finish();//销毁活动B}});
在活动B被销毁后 ,会回调上一个活动(即活动A)的onActivityResult()方法(想要在活动A中获取传递的结果,就需要覆写该方法)。
@Override // 请求码 处理结果 带返回数据的Intent protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {if(data!=null){switch (requestCode){case 1 :if(resultCode == RESULT_OK){String returnData = data.getStringExtra("data_return");Log.d("MainActivity",returnData);}break;default:}}else{return ;}
这样在活动B被销毁后,就会回到活动A,获取到活动B返回的数据了。但在用户如果在活动B并没有定义按钮button2,而是按下Back按键,这时候在 ActivityB.java中覆写 onBackPressed()方法。
@Overridepublic void onBackPressed() {Intent intent = new Intent();intent.putExtra("data_return","测试一下");setResult(RESULT_OK,intent);finish();}});
需要注意的是,应该关注到在返回 ActivityA.java 时,onActivityResult中 需要判断 data 与 null 的关系,这样子有助于程序的稳健性。
相关文章:
【Android关键字】startActivityForResult/onActivityResult/setResult方法的使用
最近在写一个安卓程序,在程序里需要用到startActivityForResult这个Intent操作关键字,与该关键字有关的还有onActivityResult和setResult。这里对其用法进行一个总结。 三者在API中的形式 //startActivityForResult与startActivity类似,只不…...
PyTorch深度学习实战(5)——计算机视觉
PyTorch深度学习实战(5)——计算机视觉 0. 前言1. 图像表示2. 将图像转换为结构化数组2.1 灰度图像表示2.2 彩色图像表示 3 利用神经网络进行图像分析的优势小结系列链接 0. 前言 计算机视觉是指通过计算机系统对图像和视频进行处理和分析,利…...
遥感目标检测(1)--R3Det
目录 一、概述 二、三个挑战 三、网络架构编辑 1、旋转RetinaNet 2、精细化旋转RetinaNet 3、与RoIAlign(感兴趣区域插值)进行比较 4、消融实验与对比实验 一、概述 R3Det论文中提到一个端到端的精细化的单级旋转检测器,通过从粗到细…...
使用 vue3-tel-input电话组件时,为什么通过v-model绑定的默认值无效而 通过:value绑定有效?
问题: 使用第三方 vue3-tel-input电话组件时,通过v-model绑定具有初始值的电话变量,但input框内显示的初始值为空? 排查过程: 将 v-model绑定改为 :value绑定后,电话变量初始值竟然能够显示在vue3-tel-inp…...
【运维工程师学习二】OS系统管理
【运维工程师学习二】OS系统管理 1、操作系统管理2、进程管理3、进程的启动4、进程信息的查看4.1、STAT 进程的状态:进程状态使用字符表示的(STAT的状态码),其状态码对应的含义:4.2、ps命令常用用法(方便查看系统进程&…...
【前端技巧】CSS常用知识碎片(九)
CSS常用知识碎片(九) mask-image属性 带有半透明的PNG图像的遮罩效果 .mask-image {mask: no-repeat center / contain;mask-image: url(bird.png); }SVG图形遮罩效果 .mask-image {mask-image: url("data:image/svgxml,%3Csvg viewBox0 0 3232…...
SQL 上升的温度
197 上升的温度 SQL架构 表: Weather ---------------------- | Column Name | Type | ---------------------- | id | int | | recordDate | date | | temperature | int | ---------------------- id 是这个表的主键 该表包含特定日期的温度信息 编写一个 SQL …...
Matlab实现最优化(附上多个完整仿真源码)
最优化是一种寻找最优解的数学方法,它在各个领域都有广泛的应用。在Matlab中,有多种工具箱和函数库可以用来实现最优化,下面我们来介绍一下如何用Matlab实现最优化。 1. 定义目标函数 在开始最优化之前,需要定义一个目标函数。目…...
es下载历史的tar文件
第一步进入官网找到历史版本 第二步复制历史版本名称组合成下面的链接 直接get访问下载。如下链接所示只需要修改7.3.0这个版本号 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz...
顺畅下载chatglm2-6b的模型文件
不管是从huggingface下,git下,wget下,都可能卡。 用推荐的清华源的url下,也卡,但url转换之后的,在windows下不了。 但是在linux上就几十兆每秒 wget https://cloud.tsinghua.edu.cn/seafhttp/files/0d8b273…...
go语言 socket: too many open files 错误分析
问题背景: 近期针对老的PHP接口做了迁移重构,用golang重新实现,在上线之前,测试进行了压测,压测的量级为:200请求/s, 连续请求10s,发现接口出现大量超时错误,查看日志发现错误信息为…...
分布式搜索--elasticsearch
一、初识 elasticsearch 1. 了解 ES ① elasticsearch 是一款非常强大的开源 搜索引擎,可以帮助我们从海量数据中 快速找到需要的内容 ② elasticsearch 结合 kibana、Logstash、 Beats,也就是 elastic stack (ELK),被 广泛应用在日志数据分…...
UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(一)
《Electric Dreams》项目中提供了一些自定义节点和子图(文件位置:“/Content/PCG/Assets/PCGCustomNodes”),这些节点和子图在《Electric Dreams》被广泛使用,对于理解《Electric Dreams》非常重要,而且它们可以直接移…...
500万PV的网站需要多少台服务器?
1. 衡量业务量的指标 衡量业务量的指标项有很多,比如,常见Web类应用中的PV、UV、IP。而比较贴近业务的指标项就是大家通常所说的业务用户数。但这个用户数比较笼统,其实和真实访问量有比较大的差距,所以为了更贴近实际业务量及压力…...
拖动排序功能的实现 - 使用HTML、CSS和JavaScript
引言 在现代Web应用程序中,拖动排序是一种常见的用户界面交互方式,它允许用户通过拖动元素来重新排列列表或项目的顺序。本文将介绍如何使用HTML、CSS和JavaScript来实现手动拖动排序功能。 一、HTML结构 首先,我们需要定义一个列表&#…...
【STM32MP135 - ST官方源码移植】第三章:OPTEE源码移植教程
STM32MP135 OPTEE源码移植教程 一、解压optee的源码压缩包二、拷贝新的设备树文件三、修改Makefile.sdk文件(1)增加stm32mp135d-atk设备树编译(2)修改编译器为arm-none-linux-gnueabihf(3)使用buildroot工具…...
云主机安全-私有密钥安全认证
场景描述 云主机凭借其性价比高、生配扩容便利、运维便捷、稳定性高等优势深受用户青睐,越来越多的企业开始租用云主机,将自己的服务器、业务系统等搭建或存储到云主机上。 用户痛点 用户租用或托管的云主机,运维端口(远程桌面&…...
《Web安全基础》02. 信息收集
web 1:CDN 绕过1.1:判断是否有 CDN 服务1.2:常见绕过方法1.3:相关资源 2:网站架构3:WAF4:APP 及其他资产5:资产监控 本系列侧重方法论,各工具只是实现目标的载体。 命令与…...
ffmpeg根据原始视频的帧率进行提取视频帧
直接上代码,自己编写的。。。有问题可以提 安装教程看这个:https://blog.csdn.net/m0_61497715/article/details/129817641 去官网下个最新的ffmpeg,解压到随便的目录,上级目录最好不要用中文; 然后去设置环境变量&am…...
从零搭建秒杀服务
1. 前言 目的:该项目只用于技术交流,不用于过多商业用途。 适用:可用于简历亮点、毕业答辩等。 2. 项目成果 2.1 秒杀主页 包含5个功能点: ①、Product Name:秒杀商品名称 ②、Product Image:秒杀商…...
高效智能的百度网盘提取码查询工具:baidupankey使用指南
高效智能的百度网盘提取码查询工具:baidupankey使用指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在数字化时代,百度网盘已成为我们存储和分享文件的重要平台。然而,加密分享链接的提…...
荣耀XD21路由器IPTV设置指南:不用VLAN交换机实现单线复用
荣耀XD21路由器单线复用实战:无需VLAN交换机实现IPTV与网络并行传输 客厅弱电箱仅预留单根网线却需要同时承载IPTV和无线网络信号——这是许多家庭网络改造中遇到的典型难题。传统方案往往依赖价格不菲的VLAN交换机实现单线复用,但通过荣耀XD21路由器的隐…...
系统移植-STM32MP1_TF-A概述
文章目录 1 设备安全2 TF-A简介3 ARMv7和ARMv8权限等级3.1 ARMv7-A工作模式3.2 ARMv8工作模式 4 TF-A不同启动阶段4.1 bl14.2 bl24.3 bl314.4 bl324.5 bl33 5 STM32MP1中的TF-A5.1 STM32MP1_TF-A框架5.1.1 STM32MP1下的bl15.1.2 STM32MP1下的bl25.1.3 STM32MP1下的bl325.1.4 ST…...
颠覆认知的5个Stagehand实战技巧:突破AI网页自动化瓶颈的进阶策略
颠覆认知的5个Stagehand实战技巧:突破AI网页自动化瓶颈的进阶策略 【免费下载链接】stagehand An AI web browsing framework focused on simplicity and extensibility. 项目地址: https://gitcode.com/GitHub_Trending/stag/stagehand 引言:从工…...
Windows Cleaner终极指南:三步解决C盘爆红,让电脑重获新生
Windows Cleaner终极指南:三步解决C盘爆红,让电脑重获新生 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 当你的C盘进度条变成刺眼的红色…...
探索Rufus全新应用场景:为老旧设备注入Windows 11新生命
探索Rufus全新应用场景:为老旧设备注入Windows 11新生命 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus 还在为Windows 11严格的硬件要求而烦恼吗?你的旧电脑完全可以运行…...
实时数据流处理实战:从滑动窗口算法到Docker部署
用 Python 造一个轻量级流处理引擎,顺便把 Git、Docker、CI/CD 全串起来 前言 你是否有过这样的需求:统计过去 5 秒内 API 的请求次数、监控传感器数据的突变、或者对直播间的弹幕进行限流?这些场景都离不开实时数据流处理。而流处理的核心&…...
探索ROCm:从基础到实践的完整路径
探索ROCm:从基础到实践的完整路径 【免费下载链接】ROCm AMD ROCm™ Software - GitHub Home 项目地址: https://gitcode.com/GitHub_Trending/ro/ROCm ROCm(Radeon Open Compute)是AMD推出的开源GPU计算平台,为高性能计算…...
解决NextCloud无法挂载SMB/CIFS共享:smbclient缺失的完整安装指南
1. 为什么NextCloud需要smbclient支持 如果你正在使用NextCloud搭建私有云存储,可能会遇到一个常见问题:无法挂载SMB/CIFS共享存储。这个问题通常会在管理后台的"外部存储"设置页面出现错误提示,核心原因就是缺少smbclient组件。 S…...
Phi-3 Forest Lab企业应用:金融研报关键数据提取+趋势归纳AI助理
Phi-3 Forest Lab企业应用:金融研报关键数据提取趋势归纳AI助理 1. 金融研报处理的行业痛点 金融分析师每天需要处理大量研报,从中提取关键数据并归纳趋势。传统人工处理方式面临三大挑战: 效率瓶颈:阅读一份20页的研报平均耗时…...
