setResult与setResultData混淆
2016-04-15 20:03
225 查看
在学习安卓几大组件,很多同学在Activity和BroadCastReciver传值之间会遇到一个容易的方法,就是:setResult()和setResultData
首先,setResult()是Activity之间传值用的方法,跟BroadCastReciver没什么关系
要十分注意,在有序的广播中,无论那个广播接受者修改Intent,传递到下一个广播接受者的Intent都是最起始发广播的Intent!!!!!!!!
setResultData,是BroadCastReciver里有序广播传值的一个方法,和Activity之间传值没什么关系.setResultData()方法,就是为了在有序广播中修改传到下一个广播中的值而存在的,且只能存储一个String.
下面条理的详解下各组件之间传值:
A.class中:
Java代码
Intent intent = new Intent();
//设置传递方向
intent.setClass(A.this,B.class);
//绑定数据
intent.putExtra("username1",username);
intent.putExtra("userpwd1"userpwd);
/*或者绑定成一捆数据
Bundle data = new Bundle();
data.putString("username1",username);
data.putString("userpwd1",userpwd);
intent.putExtras(data);
*/
//启动activity
this.startActivity(intent);
B.class中:
Java代码
Intent intent = getIntent();
//获取数据
String username = intent.getStringExtra("username1");
String userpwd = intent.getStringExtra("userpwd1");
/* Bundle data = intent.getExtras();
String username = intent.getString("username1");
String userpwd = intent.getString("userpwd1"); */
2.除了A.class可以向B.class传值外,B.class也可以返回值
A.class中
this.startActivity(intent);
改为this.startActivityFroResult(intent,1);//1为请求码
B.class中
对传过来的intent对象赋新值
Java代码
intent.putExtra("username2",username2);
intent.putExtra("userpwd2",userpwd2);
this.setResult(1,intent);
this.finish();//结束焦点
A.class中重写
Java代码
@Override protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(resultCode==1)
{
//可从data中取出值
}
}
A.class中取出B.class中intent传过来的值
A.class中
this.startActivity(intent);
改为this.startActivityFroResult(intent,1);//1为请求码
B.class中
对传过来的intent对象赋新值
Java代码
intent.putExtra("username2",username2);
intent.putExtra("userpwd2",userpwd2);
this.setResult(1,intent);
this.finish();//结束焦点
A.class中重写
Java代码
@Override protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(resultCode==1)
{
//可从data中取出值
}
}
A.class中取出B.class中intent传过来的值
首先,setResult()是Activity之间传值用的方法,跟BroadCastReciver没什么关系
要十分注意,在有序的广播中,无论那个广播接受者修改Intent,传递到下一个广播接受者的Intent都是最起始发广播的Intent!!!!!!!!
setResultData,是BroadCastReciver里有序广播传值的一个方法,和Activity之间传值没什么关系.setResultData()方法,就是为了在有序广播中修改传到下一个广播中的值而存在的,且只能存储一个String.
下面条理的详解下各组件之间传值:
可以这么说,Intent这个类的方法,基本适用于每一个组件传值.我所说的基本适用于是指Intent中最常见的两个传值方法
1.值由A.class传递到B.classA.class中:
Java代码
Intent intent = new Intent();
//设置传递方向
intent.setClass(A.this,B.class);
//绑定数据
intent.putExtra("username1",username);
intent.putExtra("userpwd1"userpwd);
/*或者绑定成一捆数据
Bundle data = new Bundle();
data.putString("username1",username);
data.putString("userpwd1",userpwd);
intent.putExtras(data);
*/
//启动activity
this.startActivity(intent);
B.class中:
Java代码
Intent intent = getIntent();
//获取数据
String username = intent.getStringExtra("username1");
String userpwd = intent.getStringExtra("userpwd1");
/* Bundle data = intent.getExtras();
String username = intent.getString("username1");
String userpwd = intent.getString("userpwd1"); */
2.除了A.class可以向B.class传值外,B.class也可以返回值
A.class中
this.startActivity(intent);
改为this.startActivityFroResult(intent,1);//1为请求码
B.class中
对传过来的intent对象赋新值
Java代码
intent.putExtra("username2",username2);
intent.putExtra("userpwd2",userpwd2);
this.setResult(1,intent);
this.finish();//结束焦点
A.class中重写
Java代码
@Override protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(resultCode==1)
{
//可从data中取出值
}
}
A.class中取出B.class中intent传过来的值
Activity中返回传值,也就是setresult方法
.除了A.class可以向B.class传值外,B.class也可以返回值A.class中
this.startActivity(intent);
改为this.startActivityFroResult(intent,1);//1为请求码
B.class中
对传过来的intent对象赋新值
Java代码
intent.putExtra("username2",username2);
intent.putExtra("userpwd2",userpwd2);
this.setResult(1,intent);
this.finish();//结束焦点
A.class中重写
Java代码
@Override protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(resultCode==1)
{
//可从data中取出值
}
}
A.class中取出B.class中intent传过来的值
setResultData()方法是在有序广播中修改传到下一个广播中的值,只能存储一个String.
相关文章推荐
- c#窗体传值用法实例详解
- C#简单实现子窗体向父窗体传值的方法
- ASP.NET页面间的传值的几种方法
- 关于C语言中参数的传值问题
- C# Winform窗口之间传值的多种方法浅析
- .Net下的签名与混淆图文分析
- php下通过POST还是GET来传值
- JS中Iframe之间传值的方法
- JavaScript实现同一页面内两个表单互相传值的方法
- asp.net 页面间传值方法小结
- Android实现将一个Activity设置成窗口样式的方法
- ASP.NET页面传递值的方式介绍
- JSP页面间传值问题实例简析
- Servlet与JSP间的两种传值情况
- javascript中的变量是传值还是传址的?
- Javascript showModalDialog两个窗体之间传值
- Android Activity 完全结束并退出程序的实例
- Android开发 旋转屏幕导致Activity重建解决方法
- android横竖屏切换时候Activity的生命周期
- Android学习笔记--使用剪切板在Activity中传值示例代码