Android基础:startActivityForResult+onActivityResult+setResult
来源:互联网 发布:数值模拟软件 编辑:程序博客网 时间:2024/04/30 04:03
整体思路:MainActivity 中有2个Buttton ,点击后开启 ActivityA+ActivityB,并将MainActivity 中的值通过intent传递给 ActivityA+ActivityB,当关闭ActivityB页面是,在将B中的数据传递给MainActivity.
涉及到的方法:
startActivityForResult(Intent intent, int requestCode )
onActivityResult(int requestCode ,int resultCode, Intent data)
setResult(int resultCode,intent intent)
其中,前2个方法是在开启 页面中的,即MainActivity
最后一个是在被开启的页面中,ActivityA +ActivityB
方法介绍:
startActivityForResult(Intent intent, int requestCode )用于开启activity,并将被开启的activity的在其关闭前 将值放返回给开启者。
本例中,MainActivity 调用这个方法,开启ActivityB,ActivityB关闭前将自己的某些数据通过intent传递个MainActivity.
setResult(int resulttCode,intent intent):返回数据
本例中,ActivityB调用这个方法将数据返回给MainActivity
onActivityResult(int requestCode ,int resultCode, Intent data)用于接收返回的数据,activityB退出的时候,此方法开启。
本例中,MainActivity 调用这个方法接收ActivityB传递过来的数据。
参数介绍:
requestCode:请求码,开启页面的时候使用startActivityForResult(Intent intent, int requestCode )
resultCode:返回码,返回数据的时候使用setResult(int resultCode,intent intent)
通过resultCode/requestCode都做判断,并加以处理
一般情况下,通过判断resultCode接收返回的数据。
代码:
开启界面
btn2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(context, ActB.class);intent.putExtra("age", 27);startActivityForResult(intent, 2);}});
接收返回值
/**一般根据resultCode判断 :是哪个activity返回的数据 * requestCode用的少,除非MainActivity中2个Button打卡同一个页面,而resultCode又相同,这就需要requetCoce判断*/@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (resultCode) {case 10:String uid = data.getStringExtra("uid");Log.i(TAG, "###UID="+uid);break;case 22:int age = data.getIntExtra("age", 20);Log.i(TAG, "###AGE="+age);break;default:break;}//super.onActivityResult(requestCode, resultCode, data);//空方法}传递返回值:
重写onBackPresed()方法,是因为super.onBackPressed()中调用finish()方法,所以我们可以在super.onBackPressed()前设置返回值(调用setResult())
@Overridepublic void onBackPressed() {Log.d("tag", "onBackPressed");Intent intent = new Intent();intent.putExtra("age", "60");setResult(2, intent);super.onBackPressed();}
注意:如果其他地方调用了finishs()方法,那么就不会调用onBackPresed(),我们可以在调用finish()方法前调用setResult()。demo:https://git.oschina.net/beifang2008/StartActivityForActivityDmeo
代码:源码
参考:http://www.cnblogs.com/lijunamneg/archive/2013/02/05/2892616.html
- Android基础:startActivityForResult+onActivityResult+setResult
- Android开发基础 startActivityForResult()、onActivityResult()和setResult()方法之间的联系
- startActivityForResult()、onActivityResult()和setResult()使用
- startActivityForResult,onActivityResult,setResult的用法
- startActivityForResult()、onActivityResult()和setResult()使用
- startActivityForResult , onActivityResult , setResult 的用法
- startActivityForResult和setResult详解 onActivityResult
- android-Activity的跳转与传值:startActivityForResult,setResult,onActivityResult
- Activity---startActivityForResult()、onActivityResult()和setResult()使用
- (Android) setResult, startActivityForResult
- Android startActivityForResult和setResult
- Android基础:startActivityForResult 和 onActivityResult 问题
- Android基础:startActivityForResult 和 onActivityResult 问题
- android基础——startActivityForResult()与onActivityResult()
- android.app.Activity类中的startActivityForResult()方法、onActivityResult()方法、setResult()方法的使用
- Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回
- Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回
- Android onActivityResult setResult的用法
- BSOJ3194:黑白树 树链剖分 TLE90分
- 记一次手贱之旅--Ubuntu安装NVIDIA驱动
- LeetCode 136.137. 260.Single Number ⅠII III
- BSOJ2381:捉迷藏 括号序列 线段树维护
- 【点分治】poj1741
- Android基础:startActivityForResult+onActivityResult+setResult
- 【点分治】poj1741
- 阿里2015实习生招聘前端方向--编程题(2)
- BSOJ2764:树中点对统计 点分治
- 非常全面到位的介绍与源代码地址 :Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
- webrtc学习之旅Getting Started
- Building Maintainable Software-java篇之Keep Architecture Components Balanced
- HttpUrlConnection缓存,仿微信朋友圈图片缓存效果
- UI界面与实现功能的交互