Ex3.11 对startActivityForResult的理解
来源:互联网 发布:mac开机密码怎么设置 编辑:程序博客网 时间:2024/05/22 15:34
数据的交互是双向的,仅实现数据的收发还远远不够。如上例(Ex3.10)所示,通过startActivity启动界面会产生一个新的Intent实例,因而所有数据也全部被初始化。
上一章通过Bundle实现了数据的收发,接下来我们通过startActivityForResult()方法来实现数据的回传。
第一、实现回传的准备工作——如何启动Activity?
据现在的知识结构来看,启动Activity只能用startActivity()或者startActivityForResult()。我们来看一下这两个接口是如何描述的:
void android.app.Activity.startActivity(Intent intent)
void android.app.Activity.startActivityForResult(Intent intent, int requestCode)
void android.app.Activity.startActivity(Intent intent)
void android.app.Activity.startActivityForResult(Intent intent, int requestCode)
参数intent我们不去细说,(如果不懂,看前一章)主要就在于requestCode的不同。官方的解释为:
requestCode : If >= 0, this code will be returned in onActivityResult() when the activity exits
我是这样理解的,requestCode的存在,就是为了区分不同模块所传回的数据。因为现实应用中,主界面需要众多子功能模块配合(子Activity)配合,要靠requestCode来辨别是哪个子模块。
接下来我们看看实例中所给出的代码,是如何调用另一Activity的。
第二、执行数据回传
在子Activity中完成相应计算后,就可以用setResut()准备要回传的数据了。当调用finish()方法后,就把intent封装的数据发到主Activity中。
而回传数据的关键就在于setResut()方法:
void android.app.Activity.setResult(int resultCode, Intent data)
void android.app.Activity.setResult(int resultCode, Intent data)
void android.app.Activity.setResult(int resultCode, Intent data)
resultCode用来区分不同的返回结果与返回状态(RESULT_CANCELED/RESULT_OK)
PS:到现在我始终质疑resultCode的存在价值,如果仅仅为了判断返回状态和返回结果,完全可以用Intent封装一个标志位吗!可能我这的观点很武断,望大家指正。
第三、接收数据
按照数据回传规则,主Activity(调用过startActivityForResult) 只要重载onActivityResult()方法就可以实现接收回传的数据了。
void android.app.Activity.onActivityResult(int requestCode, int resultCode, Intent data)
void android.app.Activity.onActivityResult(int requestCode, int resultCode, Intent data)
各个参数的意义与上面对应,就不用再解释了。我们看看Ex3.11中的数据回传都做了些什么,哪些参数用到了?哪些没用到?
总结:
使用Intent实现参数回传,关键在于文中提到的三个函数。弄清楚这三个函数,数据回传就不算事儿了。
- Ex3.11 对startActivityForResult的理解
- ex3
- startActivityForResult和onActivityResult的理解
- 关于startactivityforresult的一些理解
- startActivityForResult和setResult 的一点理解
- startActivityForResult浅入理解
- startActivityForResult理解笔记
- 关于activity的startActivityForResult / onActivityResult / setResult学习和理解
- StartActivityForResult方法和finish方法的一些理解
- RO的同人作品RBO终极资料片EX3
- 爱普生photo EX3打印机四个灯同时闪的解决方法
- Andrew Ng coursera上的《机器学习》ex3
- [Haskell] ex3
- ex3.py
- 对博客的理解
- 对动力的理解
- 对类的理解
- 对package的理解
- 同步、异步,阻塞、非阻塞
- 还没试过团购
- 驱动级模拟驱动级模拟:直接读写键盘的硬件端口!
- 1.1 VxWorks System Tasks (VxWorks的系统Tasks)
- Linux内核配置系统浅析
- Ex3.11 对startActivityForResult的理解
- Nested classes
- 如何定制化Android的播放器(VideoViewEx.java,MediaControllerEx.java,模仿RockPlayer的界面)
- 贴片电容在封装上怎么看电容的阻值
- poj 1149
- STM8S105 SPI 初始化
- android系统访问自己的tomcat服务器下的项目不能访问的原因
- 有理想的程序员必须知道的15件事
- poj 1639