android学习笔记18 - activity反馈:startActivityForResult、setResut和onActivityResult
2015-11-30 14:14
387 查看
Activity反馈:Activity关闭后,反馈信息给之前打开这个Activity的Activity。
以A打开B,B关闭后反馈给A为例进行说明。需要用到以下方法:
startActivityForResult(Intent intent, Int
requestCode)
A需要通过这个方法打开B,其中intent为当前intent,请求码requestCode用于标志请求来源。比如requestCode用于匹配一个A打开复数B的标志,比如A打开B1设定requestCode为1,打开B2设定requestCode为2。操作如下:
setResut(int resultCode, Intent intent)
当B关闭后,要将数据进行反馈,需要调用setResult。调用setResult的时机是调用finish之前。结束码resultCode用于标志结束信息的来源。操作如下:
onActivityResult(int requestCode, int resultCode, Intent intent)
A通过这个方法处理之前打开的一系列B1、B2、B3......intent可以用于处理intent打包信息,resultCode用于标志不同的B,这个B可以是相同的activity,也可以是不同的activity。requestcode标志同一个A不同位置调用的B,可以用来区分不同地方的调用。
以A打开B,B关闭后反馈给A为例进行说明。需要用到以下方法:
startActivityForResult(Intent intent, Int
requestCode)
A需要通过这个方法打开B,其中intent为当前intent,请求码requestCode用于标志请求来源。比如requestCode用于匹配一个A打开复数B的标志,比如A打开B1设定requestCode为1,打开B2设定requestCode为2。操作如下:
public void onClick(View v) { if(v.getId()==R.id.b1) { Intent intent = new Intent("CCBCScript"); Bundle bundle = new Bundle(); bundle.putString("CallStr", "LaunchApp"); intent.putExtras(bundle); startActivityForResult(intent,1); return; } if(v.getId()==R.id.b2) { String count=e1.getText().toString(); Intent intent = new Intent("CCBCScript"); Bundle bundle = new Bundle(); bundle.putString("count", count); bundle.putString("CallStr", "消费"); intent.putExtras(bundle); startActivityForResult(intent,2); return; } }
setResut(int resultCode, Intent intent)
当B关闭后,要将数据进行反馈,需要调用setResult。调用setResult的时机是调用finish之前。结束码resultCode用于标志结束信息的来源。操作如下:
public void finish(int resultCode, String ReturnStr) { Bundle bundle=new Bundle(); if(ReturnStr!=null&&ReturnStr.length()>0) { bundle.putString("ReturnStr",ReturnStr); } Intent intent=new Intent(); intent.putExtras(bundle); setResult(resultCode, intent); finish(); }
onActivityResult(int requestCode, int resultCode, Intent intent)
A通过这个方法处理之前打开的一系列B1、B2、B3......intent可以用于处理intent打包信息,resultCode用于标志不同的B,这个B可以是相同的activity,也可以是不同的activity。requestcode标志同一个A不同位置调用的B,可以用来区分不同地方的调用。
protected voidonActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode){ case 1: //来自按钮1的请求,作相应业务处理 switch(resultCode){ case 1: // B1的返回数据 case 2: // B2的返回数据 } case 2: //来自按钮2的请求,作相应业务处理 switch(resultCode){ case 1: // B1的返回数据 case 2: // B2的返回数据 } } } }
相关文章推荐
- android通知栏的变色
- AndroidStudio支持新的NDK的操作使用
- 适用于iOS上的Android风格toast通知
- Android SDK在线更新镜像服务器
- Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神
- Android屏幕密度(Density)和分辨率的解释
- Google Admob广告Android全攻略1
- Android应用如何支持屏幕多尺寸多分辨率问题
- Android图片处理
- Android四种启动模式
- Android 动画之ScaleAnimation应用详解
- 从Android运行时出发,打造我们的脱壳神器
- android.view.InflateException: Binary XML file line #10: Error inflating class fragment
- Android开发-刮刮卡效果
- Android ListView焦点事件冲突问题与解决
- Android中Parcelable和Serializable接口用法
- Android自定义View drawText绘制截取字符串
- 自定义带阴影的shape
- android软件中加入广告实现方法
- Android ViewGroup拦截触摸事件详解