方法onActivityResult,返回数据给上一个活动(Activity)

2024-09-03 12:48

本文主要是介绍方法onActivityResult,返回数据给上一个活动(Activity),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《android第一行代码》里面的第二章2.3.5

Activity中有一个startActivityForResult()方法也是用于启动活动(Activity)的,但这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。
startActivityForResult()方法接收两个参数,第一个参数是Intent,第二个参数是请求码requestCode,用于在之后的回调中判断数据的来源。

比如 A 活动(Activity)里面其中一个按钮

btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {             Intent intent = new Intent(A.this, B.class);//1 其实就是 requestCode 请求码 传入了唯一值 1startActivityForResult(intent, 1);}});

由以上我们跳转到 B 活动(Activity)

btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {             Intent intent = new Intent();intent.putExtra("data_string", "hello titleColor");//RESULT_OK 这个值相当于 onActivityResult方法里面的resultCodesetResult(RESULT_OK, intent);finish();}});

我们看到 B 活动(Activity) 点击该按钮之后,我们还是构建了一个Intent ,只不过Intent只是用于传递数据而已,它没有任何的‘意图’。紧接着把要传递的数据存放在Intent中,然后调用setResult()方法。是专门用于向上一个活动(Activity)返回数据的。setResult方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一半只用RESULT_OK或者 RESULT_CANCELED这两个值,第二个参数则是把带有数据的Intent传递回去,然后调用finish()方法来销毁当前的活动。

由于我们使用startActivityForResult()方法来启动 B 活动 (Activity)的 ,再 B 活动(Activity)被销毁之后会回调上一个 A 活动 (Activity)的onActivityResult()方法,因此我们要在 A 活动
(Activity)中重写这个方法来得到返回的数据。

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode) {case 1:if (resultCode == RESULT_OK) {String dataString = data.getStringExtra("data_string");System.out.println("resultCode" + dataString);Toast.makeText(this, dataString, Toast.LENGTH_SHORT).show();}break;}}

onActivityResult()方法有三个参数,第一个参数requestCode,即我们在启动活动时传入的请求码,第二个参数resultCode,即我们在返回数据时传入的处理结果。第三个参数data,即携带着返回数据的Intent。由于在一个活动中有可能调用satarActivityResult()这个方法中,因此我们首先要做的就是通过检查requestCode的值来判断数据来源。确定数据是从B活动返回的之后,我们再通过resuletCode的值来判断处理结果是否成功。最后从data中取值,这样就完成了向上一个活动返回数据的工作。

这篇关于方法onActivityResult,返回数据给上一个活动(Activity)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132997

相关文章

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查