Android中的onActivityResult和setResult方法的使用

$*********************************************************************************************$


博主推荐:


风萧兮兮易水寒,“天真”一去兮不复还。如何找到天真的那份快乐。小编倾力推荐app: 天真无谐


下载方式:豌豆荚,应用宝,360手机助手,百度手机助手,安卓,91市场搜索:天真无谐


关注我们:查看详情


$*********************************************************************************************$


如果你想在Activity中得到新打开Activity关闭后返回的数据,你需要使用系统提供的startActivityForResult(Intent intent,int requestCode)方法打开新的Activity,新的Activity关闭后会向前面的Activity传回数据,为了得到传回的数据,你必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode,Intent data)方法:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {Button button =(Button)this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener(){
//点击该按钮会打开一个新的Activitypublicvoid onClick(View v) {//第二个参数为请求码,可以根据业务需求自己编号startActivityForResult(new Intent(MainActivity.this, NewActivity.class),  1);}});}//第一个参数为请求码,即调用startActivityForResult()传递过去的值//第二个参数为结果码,结果码用于标识返回数据来自哪个新Activity@Override protected voidonActivityResult(int requestCode, int resultCode, Intent data) {String result =data.getExtras().getString(“result”));//得到新Activity关闭后返回的数据}
}    

当新Activity关闭后,新Activity返回的数据通过Intent进行传递,android平台会调用前面ActivityonActivityResult()方法,把存放了返回数据的Intent作为第三个输入参数传入,在onActivityResult()方法中使用第三个输入参数可以取出新Activity返回的数据。

请求码的作用:

使用startActivityForResultIntent intent . intrequestcode)方法打开新的activity,我们需要为该方法传递一个请求码。请求码的值是根据业务需要由自已设定,

用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面ActivityonActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相应的业务处理,这时可以这样做:

@Override  
public void onCreate(Bundle savedInstanceState) {....button1.setOnClickListener(newView.OnClickListener(){public void onClick(View v) {startActivityForResult (newIntent(MainActivity.this, NewActivity.class), 1);}});button2.setOnClickListener(newView.OnClickListener(){public void onClick(View v) {startActivityForResult (newIntent(MainActivity.this, NewActivity.class), 2);}}); @Override protected voidonActivityResult(int requestCode, int resultCode, Intent data) {switch(requestCode){case 1://来自按钮1的请求,作相应业务处理case 2://来自按钮2的请求,作相应业务处理}}

结果码的作用:用于标示返回结果的来源。

在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面ActivityonActivityResult(int requestCode, int resultCode, Intentdata)方法。为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做(ResultActivityNewActivity为要打开的新Activity)

public class ResultActivity extends Activity {.....ResultActivity.this.setResult(1, intent);ResultActivity.this.finish();
}
public class NewActivity extends Activity {......NewActivity.this.setResult(2,intent);NewActivity.this.finish();
}
public class MainActivity extends Activity { // 在该Activity会打开ResultActivity和NewActivity@Override protected voidonActivityResult(int requestCode, int resultCode, Intent data) {switch(resultCode){case 1:// ResultActivity的返回数据case 2:// NewActivity的返回数据}}
}

需要返回数据或结果的,则使用startActivityForResult (Intent intent, intrequestCode),requestCode的值是自定义的,用于识别跳转的目标Activity。

跳转的目标Activity所要做的就是返回数据/结果,setResult(int resultCode)只返回结果不带数据,或者setResult(int resultCode, Intent data)两者都返回!而接收返回的数据/结果的处理函数是onActivityResult(intrequestCode, int resultCode, Intent data),这里的requestCode就是startActivityForResult的requestCode,resultCode就是setResult里面的resultCode,返回的数据在data里面

转载于:https://www.cnblogs.com/roccheung/p/5797455.html

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

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

相关文章

单文件快速体验使用react输出hello_world

看了下react官方的hello world教程, 感觉对新手很不友好.codepen虽然好用, 但是封装太多东西, 看起来 太抽象. 还是喜欢像学习jQuery那样, 直接在单文件中引入必要的js文件, 然后直接运行的那种感觉. 如果使用VS Code, 建议安装Sublime Babel, 来提供对react语法的代码高亮. 基…

linux用户及权限操作

用户和用户组 说明:在Linux中只有超级管理员权限才能对用户和用户组进行设置,其他的用户一律没有权限设置: 用户管理 语法:#useradd 用户名 添加一个新用户 注&#xff1…

python flask Blueprint搭建

随着功能的添加,路由越来越多,view层的拆分变成了刚需 蓝图的杀手锏是将你的应用组织成不同的组件,比如把这里的admin,main,course等相关的视图方法分为组件。这时我们可以 创建三个蓝图实现这两个独立的组件。static文…

第6章 服务模式 Service Interface(服务接口)

Service Interface(服务接口)上下文您正在设计企业应用程序,并且需要能够通过网络使用其部分功能。此功能需要能够被各类系统使用,因此互操作性是设计的重要方面。除互操作性之外,可能还需要支持不同的通信协议&#x…

dialog像父activity传递参数

启动新activity有两种方式: startActivityForResult(Intent, int); startActivity(Intent, Bundle); 新开启的dialog像父activity传递参数用第一种方法。 startActivityForResult(Intent, int) intent:要传递的值 int:给新开启的dialog打标签…

linux目录规范及简单说明

Linux系统目录结构以及简单说明 linux目录图: / root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。home --- 存储普通用户的个人文件 ftp --- 用户所有服务httpdsambauser1user2 bin --- 系统启动时需要的执行文件(二进制&…

Flask中的session操作

https://www.cnblogs.com/notzy/p/9187304.html 一、配置SECRET_KEY 因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密,所以,只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。…

逆向Android软件的步骤

2019独角兽企业重金招聘Python工程师标准>>> 逆向Android软件的步骤: 首先使用反编译的工具对反编译,然后阅读反汇编代码,如果有必要还会对其进行动态调试,找到突破口后注入或直接修改反汇编代码,最后重新编…

CRT 重启Was

输入用户名、密码登陆以后 # ps -eaf | grep websphere 找到路径 /usr/IBM/WebSphere/AppServer/ 进入/usr/IBM/WebSphere/AppServer/bin 运行 stopServer.sh server1 其中server1为服务器实例名 需要输入登陆was控制台的用户名、密码 运行 startServer.sh server1 即完成服务器…

JAVA中跨平台分隔符

在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常。 比如说要在temp目录下建立一个test.txt文件,在Windows下应该这么写:File file1 new File (&q…

Flask Sessions会话

与Cookie不同,会话数据存储在服务器上。会话是客户端登录到服务器并注销的时间间隔。需要在此会话中进行的数据存储在服务器上的临时目录中。 与每个客户端的会话分配一个会话ID。会话数据存储在cookie顶部,服务器以加密方式签名。对于这种加密&#xf…

linux rsync 远程同步

rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具。Rsync通过“rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。工作机制: 在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客…

GUI 快捷键的实现思路

思路: 前提快捷键操作不可重复,即一个快捷键对应一个控件的动作一个窗体保持一份快捷键的map映射在相应的消息中获取快捷键列表如键盘消息在控件类对象中定义一个默认的响应行为,比如Button按了Enter键当子控件隐藏,父控件关系发生变化时则重新设置快捷键转载于:https://www.cn…

hadoop中unhealthynodes的问题解决

在yarn-site.xml中加入如下配置 <property> <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name> <value>0.0</value> </property> <property><name>yarn.nodemanager.disk-health-checker.max-d…

javascript权威指南——笔记(第十章:正则)

正则表达式是描述字符模式的对象 为什么使用正则&#xff1a; 1.找数字 1 var str "12 f13kjm54n43 43k";2 var arr [];3 4 for(var i 0, len str.length; i<len; i){5 6 var char str.charAt(i);7 8 if(char > "0"…

解決 centos -bash: vim: command not found

i. 那么如何安裝 vim 呢? 输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码: rootserver1 [~]# rpm -qa|grep vim vim-enhanced-7.0.109-7.el5 vim-minimal-7.0.109-7.el5 vim-common-7.0.109-7.el5 如果少了其中的某一条,比如 vim-enhanced 的,就…

mysql日期和时间类型

mysql日期和时间类型 mysql有5种表示时间值的日期和时间类型&#xff0c;分别为、DATE&#xff0c;TIME&#xff0c;YEAR&#xff0c;DATETIME&#xff0c;TIMESTAMP。 TIMESTAMP类型有专有的自动更新特性&#xff0c; TIMESTAMP类型有专有的自动更新特性&#xff0c; TIME…

Python程序每日一练习

问题一&#xff1a;做为Apple Store App独立开发者&#xff0c;你要搞限时促销&#xff0c;为你的应用生成激活码&#xff08;或者优惠券&#xff09;&#xff0c;使用Python如何生成200个激活码&#xff08;或者优惠券&#xff09;&#xff1f; 简介&#xff1a;通用唯一识别码…

C/C++查找一定范围内的素数(筛法)

本文转自于&#xff1a;http://dalu.blogbus.com/logs/37977984.html 由于一个合数总是可以分解成若干个质数的乘积&#xff0c;那么如果把质数&#xff08;最初只知道2是质数&#xff09;的倍数都去掉&#xff0c;那么剩下的就是质数了。例如要查找100以内的质数&#xff0c;首…

mysql中char,varchar与text类型的区别和选用

关于char&#xff0c;varchar与text平时没有太在意&#xff0c;一般来说&#xff0c;可能现在大家都是用varchar。但是当要存储的内容比较大时&#xff0c;究竟是选择varchar还是text呢&#xff1f;不知道。。。。。。 text 、 char、varchar 是数据在数据库中的存放策略问题…