setResult与setResultData混淆

      在学习安卓几大组件,很多同学在Activity和BroadCastReciver传值之间会遇到一个容易的方法,就是:setResult()和setResultData


首先,setResult()是Activity之间传值用的方法,跟BroadCastReciver没什么关系

要十分注意,在有序的广播中,无论那个广播接受者修改Intent,传递到下一个广播接受者的Intent都是最起始发广播的Intent!!!!!!!!

setResultData,是BroadCastReciver里有序广播传值的一个方法,和Activity之间传值没什么关系.setResultData()方法,就是为了在有序广播中修改传到下一个广播中的值而存在的,且只能存储一个String.


下面条理的详解下各组件之间传值:

       可以这么说,Intent这个类的方法,基本适用于每一个组件传值.我所说的基本适用于是指Intent中最常见的两个传值方法

1.值由A.class传递到B.class
A.class中:

Java代码   收藏代码
  1. Intent intent = new Intent();  
  2.  //设置传递方向   
  3. intent.setClass(A.this,B.class);   
  4. //绑定数据   
  5. intent.putExtra("username1",username);   
  6. intent.putExtra("userpwd1"userpwd);  
  7.  /*或者绑定成一捆数据  
  8. Bundle data = new Bundle();  
  9. data.putString("username1",username);  
  10. data.putString("userpwd1",userpwd); 
  11. intent.putExtras(data);  
  12. */   
  13. //启动activity   
  14. this.startActivity(intent);   

 

 

 

 

B.class中:

 

 

Java代码   收藏代码
  1. Intent intent = getIntent();   
  2. //获取数据   
  3. String username = intent.getStringExtra("username1");   
  4. String userpwd = intent.getStringExtra("userpwd1");   
  5. /* Bundle data = intent.getExtras();  
  6. String username = intent.getString("username1");  
  7. 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代码   收藏代码
  1. intent.putExtra("username2",username2);   
  2. intent.putExtra("userpwd2",userpwd2);  
  3. this.setResult(1,intent);   
  4. this.finish();//结束焦点   

A.class中重写

 

 

Java代码   收藏代码
  1. @Override protected void onActivityResult(int requestCode,int resultCode,Intent data){  
  2.  super.onActivityResult(requestCode,resultCode,data);   
  3.  if(resultCode==1)   
  4. {  
  5.  //可从data中取出值   
  6. }   
  7. }   

 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代码   收藏代码
  1. intent.putExtra("username2",username2);   
  2. intent.putExtra("userpwd2",userpwd2);  
  3. this.setResult(1,intent);   
  4. this.finish();//结束焦点   

A.class中重写

 

 

Java代码   收藏代码
  1. @Override protected void onActivityResult(int requestCode,int resultCode,Intent data){  
  2.  super.onActivityResult(requestCode,resultCode,data);   
  3.  if(resultCode==1)   
  4. {  
  5.  //可从data中取出值   
  6. }   
  7. }   

 A.class中取出B.class中intent传过来的值










setResultData()方法是在有序广播中修改传到下一个广播中的值,只能存储一个String.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值