您的位置:首页 > 其它

setResult与setResultData混淆

2016-04-15 20:03 225 查看
      在学习安卓几大组件,很多同学在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代码  


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.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息