Andriod 中两个Activity之间传值的几种思路

本文介绍了Android中两种常见的Activity间传递数据的方法:通过Bundle和直接使用Intent。使用Bundle将数据放入Intent,以及Intent的各种putExtra方法进行不同类型的数据传递。在接收端,通过Intent获取传递的数据。虽然直接使用Intent会占用本地资源,但能实现多个Activity间的数据共享。更多本地存储数据的方式会在后续博客中讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  想必做过Andriod开发的人都遇到这样的问题,就是在两个activity直接传值。下面话不多说直接介绍思路。

     思路一:;利用Bundle传值

    基本过程就是把数据先放到Bundle里,然后再把Bundle放到Intent里,直接上代码

Intent loginIntent = new Intent(mContext, SearchCmxActivity.class);
 Bundle b = new Bundle();   
 b.putInt("isGwbEnabled", isGwbEnabled);  
 loginIntent.putExtras( b );  
startActivity(loginIntent);

取值:

int  isGwbEnabled= getIntent().getExtras().getInt("isGwbEnabled");  
  

 思路二:直接利用Intent传值  

  Intent loginIntent=loginIntent = new Intent(mContext,GwbAccountJymxActivity.class);
   loginIntent.putExtra("id", “222”);
   startActivity(loginIntent);

putExtra有各种重载方法,第二个参数可以是任何类型。

取值:

String id = getIntent().getStringExtra("id ");


 思路三:上面都是传一些系统自带的数据类型,如果想传一个对象或者对象的数组怎么办呢?

 还是用Intent传值,利用这个函数

Intent android.content.Intent.putExtra(String name, Serializable value)

很明显,第二个参数是Serializable类型,就是对象要实现Serializable接口,如果是对象数组的话,数组中的对象要实现Serializable接口。

具体用法,见下边代码:

List< AfterSeachGoodsItem> totalArr=new ArrayList<AfterSeachGoodsItem>() ;
Intent aftersearchIntent = new Intent(mContext,AnAfterSearchActivity.class);
aftersearchIntent.putExtra("ProductCategoryLIst",  (Serializable)totalArr);
startActivity(aftersearchIntent) ;

取值:

List< AfterSeachGoodsItem> totalArr = (List< AfterSeachGoodsItem>) getIntent().getSerializableExtra("ProductCategoryLIst");

 

思路四:就是采用绕弯的方式了,就是先把数据存在本地,然后在下一个Activity中从本地取。

这种方式的缺点就是要占用本地的资源,有点是数据可以在多个Activity直接共享,关于本地存储数据的几种方式,我将在下一篇博客中介绍。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一步一台阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值