美文网首页
第三天:使用Intent在活动中传递数据

第三天:使用Intent在活动中传递数据

作者: 善水Android输出端 | 来源:发表于2017-05-08 00:31 被阅读0次

    使用Intent在活动中传递数据

    通过前面的学习,我们了解到了使用Intent启动活动,拨打电话,发送短信。获取地理位置信息,在这一节我们将继续使用Intent在活动之间传递数据,Intent中提供了putExtra()方法的重载,该方法使用可以把要传递的数据暂时存储在Intent中,当启动另一个Activity时,只要再从中取出数据就可以,比如在FirstActivity中向SecongActivity中传递一个字符串时,可以使用以下:

    在FirstActivity中写如下代码


    String data="Hello SecondActivity";//声明需要在两个活动中传递数据

    Intent intent=new Intent();//新建一个Intent对象

    intent.setClass(FirstActivity.this ,SecondActivirty.class);//设置intent的执行动作:启动SecondActivity

    intent.putExtra("extra_data",data);

    startActivity(intent);

    在putExtra()方法中传入两个参数,这两个参数是Key-Value的键值对;


    在SecondActivity我们取出数据的代码如下

    Intent intent=getIntent();

    String data=intent.getStringExtra("extar_data");

    log.d("SecondActivity".data);

    在如上述的代码中,我们首先新建Intent对象,并通过getIntent()方法获取用于启动SecondActivity的Intent传递过来的数据data;因为我们 输入是data是一个字符串,所以我们调用getsStringExtra()方法来获取该数据的字符串,如果传入的是Int,我们则是使用getIntExtra()方法;如果是传入的布尔值,则使用getBooleanExtra()方法。



    返回数据给上一个活动

    既然能够将数据传递给下一个活动,那么我们是否可以将数据传递到上一个活动呢?答案是一定的。在Activity中还有一个方法startActivityForResult();此方法也是用来启动活动的;但不同的是在这一个方法中,是在活动销毁的时候能够返回一个结果给上一个活动。

    startActivityForResult()方法传入其中的两个参数,第一个参数是:Intent。第二个参数是请求码(用于在后面的回调方法中判断该数据的来源。具体的实现:

    我在FirstActivity中声明如下:

    //声明Intent的执行动作

    Intent intent=new Intent(FirstActivity.this , SecondActivirty.calss);

    //启动活动方法中的请求码只要是唯一值就可以 了

    startActivityForResult(intent,1);

    接下来在SecondActivity中实现返回数据给上一活动的逻辑

    Intent intent=new Intent();

    intent.putExtra("data_reuturn","Hello FirstActivity");

    setResult(RESULT_OK,intent);

    finish();

    //setResult()方法中需要传入两个数据,第一个参数是用于向上一活动返回的处理结果,一般只是用RESULT_OK或者RESULT_CANCELED.。第二个参数则是把带有数据intent传递回去。最后调用finish()方法来销毁当前的活动。

    因为我们是使用startActivityForResult()方法来启动SecondActivity的,所以在SecondActivity销毁之后就i会回调上一活动的onActivityResult()方法;因此我们在FirstActivity中需要重写此方法来接受返回的数据,如下

    @override

    protected void onActivityResult(int requestCode, int resultCode, intent data){{

    switch(requestCode){

    case 1;

    if(resultCode==RESULT_OK){

    String returnData=data.getStringExtra(data_return);

    }

    break;

    default;

    }

    }

    onActivityResult()方法需要传入三个参数。第一个参数是request也就是我们在启动活动时传入的1;第二个参数是resultCode,也就是返回数据的RESULT_OK.。第三个参数,data 就是返回数据的intent.

    相关文章

      网友评论

          本文标题:第三天:使用Intent在活动中传递数据

          本文链接:https://www.haomeiwen.com/subject/jovptxtx.html