setResult与setResultData混淆

来源:互联网 发布:linux tomcat常用命令 编辑:程序博客网 时间:2024/04/28 22:29

      在学习安卓几大组件,很多同学在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 0
原创粉丝点击