我们在这里分为两个部分:
1.向下一个活动传递数据
2.返回数据给上一个活动
下面代码省略的内容:
1.button在布局中的设定
2.活动自动生成的相关代码
第一部分 向下一个活动传递数据
继上篇文章,我们把要传送的信息封装在intent中传送过去,如果看不懂的话,可以参见上篇文章intent的介绍。
下面代码的位置是在oncreate方法当中,定义的一个按钮响应时间,点击按钮,我们就跳转到第二个活动,并且把封装的信息传递过去。
button.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
//第一个参数:启动活动的上下文,也就是这个活动
//第二个参数:要启动的目标活动
String data="hello";
intent.putExtra("extra_data",data);
//第一个参数:数据的键
//第二个参数:要传送的数据
startActivity(intent);
//开启指定的活动
}
});
传送数据当然就要有接收的,我们在第二个活动的oncreate中定义接收的代码
Intent intent=getIntent();//获取传送过来的intent对象
String data=intent.getStringExtra("extra_data");//通过键获取数据
Log.d("SecondActivity",data);//将接收到的数据打印出来
第二部分 返回数据给上一个活动
首先在第一个活动中改为如下代码,就是把startActivity改为了startActivityForResult,意思是需要返回一个数据,请求码是1.
button.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
//第一个参数:启动活动的上下文,也就是这个活动
//第二个参数:要启动的目标活动
startActivityForResult(intent,1);
//开启指定的活动,第二个参数是用于标识的请求码,我们把它设为1
}
});
之后在第二个活动中,重新定义一个按钮,如果点击的话,我们就返回数据给上一个活动
button1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent=new Intent();
intent.putExtra("extra_return","hello");
setResult(RESULT_OK,intent);//第一个参数为处理结果RESULT_OK或者RESULT_CANCELED
finish();
}
});
最后,返回之后,在第一个活动中还得定义一个接收的东西,重写onActivityResult方法
protected void onActivityResult(int requestCode,int ResultCode,Intent data)
{
//第一个参数:请求码也就是之前的1
//第二个参数:返回数据时传入的处理结果
//第三个参数:带有数据的Intent
switch(requestCode)
{
case 1://判断是否为我们的请求码
if(resultCode==RESULT_OK)
{
String returnedData=data.getStringExtra("data_return");
}
break;
default:
}
}