前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Activity之间的数据传递【转载】

Android Activity之间的数据传递【转载】

作者头像
_DIY
发布2020-12-09 11:02:11
1.1K0
发布2020-12-09 11:02:11
举报
文章被收录于专栏:用户6093955的专栏

1、向目标Activity【Main2Activity】传递数据:

代码语言:javascript
复制
Intent intent=new Intent(this,Main2Activity.class);
//可传递多种类型的数据
intent.putExtra("name","张三");
intent.putExtra("age",12);
startActivity(intent);

2、在目标Activity【Main2Activity】中取出数据

代码语言:javascript
复制
Intent intent=getIntent();
//用getXxxExtra()取出对应类型的数据。取出String只需要指定key
String name=intent.getStringExtra("name");
//取出int要指定key,还要设置默认值,当intent中没有该key对应的value时,返回设置的默认值
int age=intent.getIntExtra("age",0);

在目标Activity【Main2Acitivity】销毁时,想让它可以回传数据给上一个Activity,这样需要改写前面的代码: 1、设置一个请求码标识当前Activity,让它跳转到目标Activity【Main2Activity】,

代码语言:javascript
复制
Intent intent=new Intent(this,Main2Activity.class);
//startActivityForResult()方法可以启动一个Activity,并可以设置一个int型的请求码标识当前Activity
startActivityForResult(intent,1);

2、在目标Activity【Main2Activity】中回传数据

代码语言:javascript
复制
//回传数据用得Intent可以新建,也可以用getIntent()
Intent intent=new Intent();
//设置要回传的数据
intent.putExtra("name","张三");
intent.putExtra("age",18);
//设置结果码标识当前Activity,回传数据。不管多早调用这句代码,这句代码在当前Activity销毁时才会执行,即此Activity销毁时才会回传数据。请求码和结果码不必相同。
setResult(1,intent);

回传时会把请求码、结果码、Intent数据封装为一个整体回传,请求码+结果码唯一标识回传的Intent 3、在上一级Activity中取出回传的数据 上一级Activity使用 startActivityForResult() 开启目标Activity后,当目标Activity销毁时,会向上一级Activity回传数据,并回调上一级 Activity的 onActivityResult() 方法。 我们需要重写上一级Activity的 onActivityResult() 方法获取回传数据。

代码语言:javascript
复制
//重写上一级Activity的onActivityResult()方法来获取目标Activity回传的数据
//三个形参,请求码、结果码、目标Activity回传的Intent
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    //调用基类的方法,此句代码会自动生成
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==1){   //如果请求码是当前Activity的
                       if(resultCode==1){    //如果结果码是某个目标Activity的,就取出对应的数据。这个判断主要是可能有多个目标Activity向当前Activity回传数据,这些Intent数据中可能具有相同的key
                                         String name=data.getStringExtra("name");
                                         int age=data.getIntExtra("age",0);
                                        }
                      }
}

如过上一级Activity开启了多个目标Activity,回传数据时都是回调onActivityResult()方法,所以常常要根据结果码区分是哪个目标Activity回传的数据。如果只开启了一个目标Activity,则不必判断。 数据回传很常用,比如发微信朋友圈时,进入相册选择好图片后,会回传选择的图片的信息。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档