startActivityForResult+onActivityResult+setResult
2016-02-16 00:53
387 查看
整体思路: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)用于接收返回的数据
本例中,MainActivity 调用这个方法接收ActivityB传递过来的数据。
参数介绍:
requestCode:请求码,开启页面的时候使用startActivityForResult(Intent intent, int requestCode )
resultCode:返回码,返回数据的时候使用setResult(int resultCode,intent intent)
通过resultCode/requestCode都做判断,并加以处理
一般情况下,通过判断resultCode接收返回的数据。
代码:
开启界面
接收返回值
重写
代码:源码
参考:http://www.cnblogs.com/lijunamneg/archive/2013/02/05/2892616.html
涉及到的方法:
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)用于接收返回的数据
本例中,MainActivity 调用这个方法接收ActivityB传递过来的数据。
参数介绍:
requestCode:请求码,开启页面的时候使用startActivityForResult(Intent intent, int requestCode )
resultCode:返回码,返回数据的时候使用setResult(int resultCode,intent intent)
通过resultCode/requestCode都做判断,并加以处理
一般情况下,通过判断resultCode接收返回的数据。
代码:
开启界面
btn2.setOnClickListener(new OnClickListener() { @Override public 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判断*/ @Override protected 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);//空方法 }传递返回值:
重写
onBackPressed()方法,是因为<span style="white-space: pre;">setResult(int resulttCode,intent intent)</span>:这个方法必须在finish()前。
@Override public void onBackPressed() { Intent data = new Intent(); data.putExtra("age",25); setResult(22, data); super.onBackPressed(); }
代码:源码
参考:http://www.cnblogs.com/lijunamneg/archive/2013/02/05/2892616.html
相关文章推荐
- 2015 湘潭邀请赛 Tuples
- 作对
- 七牛云存储的使用心得
- MySql模糊查询like通配符使用详细介绍
- Codeforces Round #256 (Div. 2) A. Rewards
- linux学习一天一个命令(13)[head命令]
- USACO 4.2.1 网络流 Dinic
- linux学习一天一个命令(12)[less命令]
- 2的次幂表示
- 王巧乐菇凉的360图书馆--记录大量web日志分析的内容,非常好
- 安装LAMP一路的心酸
- 扩大VMware虚拟机中CentOS 7的硬盘空间
- string
- Open Live Writer
- linux学习一天一个命令(11)[more命令]
- html 入门
- 我的Mac之路(1)—— 安装虚拟机,以及打造VIM IDE for Python
- 基于CentOS7开发之路 --- 第一章 : 安装 CentOS 7.2-1511
- Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
- Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结