android studio通过intent进行不同活动之间的数据交互

我们在这里分为两个部分:

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:
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41901915/article/details/81434204