Activity之间通过intent交互

intent是不同组件之间用于传递消息的对象,一般用于跳转活动,启动活动,启动服务等。

发送数据(方式1)

java 复制代码
Intent intent=new Intent(Activity1.this,Activity2.class);
intent.putExtra("key",value);
startActivity(intent);

这是一个最简单的模板。创建一个intent对象并传入两个参数,都是Activity类型。第一个参数代表目前所在的Activity,第二个参数代表要开启(跳转到的)Activity。intent.putExtra(),以键值对的方式传入一些数据。

value(值) 的类型可以是基本类型,String类型也可以是Serializable类型。最后一种类型允许使用者将对象序列化并作为参数传到目标活动中去。

发送数据(方式2)

java 复制代码
Bundle bundle=new Bundle();
bundle.putString("key1",value1);
bundle.putInt("key2",value2);
bundle.putSerializable("key3",value3);
...
Intent intent=new Intent(Activity1.this,Activity2.class);
intent.putExtras(bundle);
startActivity(intent);

另外一种方式就是将数据放到bundle对象中,再将bundle对象通过intent的putExtras()方法传入intent中。

目标活动接收数据(方式1)

java 复制代码
Intent intent=getIntent();
String str=intent.getStringExtra("key1");
int integer=intent.getIntExtra("key2");
Cls obj=(Cls)intent.getSerializableExtra("key3");

getIntent()方法是Activity里面自带的方法

另外要注意的是,如果想将一个对象序列化传到目标活动中去的话,你需要让这个类实现Serializable接口,而且这个类里面所涉及到的类也要实现该接口,不然就会报错。

接收数据方式2

java 复制代码
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
String str=bundle.get("key1");
int integer=bundle.getInt("key2");
Cls obj=(Cls)bundle.getSerializable("key3");

对应的是通过bundle发送数据的方法

相关推荐
编程彩机1 小时前
互联网大厂Java面试:从分布式架构到大数据场景解析
java·大数据·微服务·spark·kafka·分布式事务·分布式架构
小酒窝.1 小时前
【多线程】多线程打印1~100
java·多线程
君爱学习1 小时前
基于SpringBoot的选课调查系统
java
APIshop2 小时前
Java 实战:调用 item_search_tmall 按关键词搜索天猫商品
java·开发语言·数据库
血小板要健康2 小时前
Java基础常见面试题复习合集1
java·开发语言·经验分享·笔记·面试·学习方法
qq_177767372 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
淼淼7632 小时前
安装jdk1.8
java·开发语言
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 高校食堂餐饮管理系统的设计与实现为例,包含答辩的问题和答案
java
过期动态2 小时前
Java开发中的@EnableWebMvc注解和WebMvcConfigurer接口
java·开发语言·spring boot·spring·tomcat·maven·idea
摇滚侠2 小时前
IDEA 定义返回值快捷键
java·ide·intellij-idea