Activity间传递数据

Activity之间传递数据

  • 什么是Activity?
    打开一个App,所看见的那个界面就是Activity。其实准确的说,Activity是界面的载体。
    Android讲究逻辑和视图分离,首先在Android项目下的res.layout目录下创建activity的xml文件,然后在将此界面和Activity通过setContentView绑定。
    最后一定要注意的是,要在AndroidManifest.xml文件中注册这个Activity。

1. Activity向下一个Activity传递数据

  • 在一个时间,只能有一个activity展示在用户面前,但一个App却不能只有一个Activity。那么由一个activity如何跳转到另一个activity呢?跳转的同时,能不能携带某些数据数据过去呢?
    • 代码实现:由A活动向B活动传递数据
Intent intent =  new  Intent(A.this , B.class);
//这里的tag作用是标签,用于B活动接受数据
intent.putExtra(String tag,  data);
startActivity(intent);
//B活动接受数据:
Intent intent = getIntent();
intent.getTypeExtra(tag);
//type是数据类型,如String、Char。传入什么数据,就接受什么数据
  • 除此之外,还有一种方法,就是利用Bundle对象传递数据。首先先把需要传递的数据封装到Bundle对象中,然后通过Intent将Bundle对象传递到下一个活动。这种方法适合传递较多的数据。

2. 向上一个活动传递数据

  • 依然延续上面那个例子,由A活动向B活动传递数据行得通,那么B活动向A活动反馈数据呢?
  • 这里需要注意的是,A活动启动Intent的方式要变化一下。本来是startActivity(Intent intent);,这里需要改为startActivityForResult(Intent intent,int requestCode);
  • 除此之外,A活动还需要一步,重写onActivityResult(int requestCode, int resultCode, Intent data),解释一下三个参数的含义:
    • int requestCode,和启动方式里的requestCode相对应,用于区分哪个Activity返回的数据
    • int resultCode,返回结果,失败还是成功。一般使用两个值RESULT_OK或者RESULT_CANCELED
    • 至于Intent data,就是包含数据的Intent了
  • 在B活动内,代码实现如下:
Intent intent = new Intent();

        intent.putExtra("data_return", data);

        setResult(RESULT_OK, intent);

        finish();//由B活动返回A活动,B活动被销毁,相当于back键。

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值