定义

用于描述应用的动作及其对应数据

作用

①指定当前组件需要做的动作
②在不同组件之间传递数据(Activity、Service、BroadcastReceiver)

使用

指明组件要完成的动作

显式意图
在intent初始化时直接显式传入所需数据
隐式意图
通过action、category、data匹配隐式获取到AndroidManifest中设置好的内容
具体使用在Activity分析中用到

不同组件传递数据

使用方法

putExtra()、Bundle

可传递的数据类型

①8大基本数据类型
②Intent、Bundle
③Serializable对象、Parcelable对象、CharSequence类型
④ArrayList,泛型参数类型为<Integer>、<? Extends Parcelable>、<Charsequence>、<String>

具体使用

在当前Activity中将传递的数据存到Intent中,再在新启动的Activity中取出Intent获取数据

putExtra:

// a. 创建Intent对象(显示Intent)
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);     

// b. 通过putExtra()方法传递一个字符串到SecondActivity;
// putExtra()方法接收两个参数:第一个是键,第二个是值(代表真正要传递的数据)
intent.putExtra("data","I come from FirstActivity");

// c. 启动Activity
startActivity(intent);

数据获取:

// 2. 数据取出(在被启动的Activity中)
// a. 获取用于启动SecondActivit的Intent
Intent intent = getIntent();
// b. 调用getStringExtra(),传入相应的键名,就可得到传来的数据
// 注意数据类型 与 传入时保持一致
String data = intent.getStringExtra("data");

bundle

// 1. 数据传递
// a. 创建Intent对象(显示Intent)
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);     

// b. 创建bundle对象
Bundle bundle = new Bundle();

// c. 放入数据到Bundle
bundle.putString("name", "carson");
bundle.putInt("age", 28);

// d. 将Bundle放入到Intent中
intent.putExtras(bundle);

// e. 启动Activity
startActivity(intent);

数据获取:

// 2. 数据取出(在被启动的Activity中)
// a. 获取用于启动SecondActivit的Intent
Intent intent = getIntent();

// b. 通过Intent获取bundle
Bundle bundle = intent.getExtras();

// c. 通过bundle获取数据传入相应的键名,就可得到传来的数据
// 注意数据类型 与 传入时保持一致
String nameString = bundle.getString("name");
int age = bundle.getInt("age");
两种方式的区别

①当涉及连续传递数据时,使用putExtra需要写多次获取、写入数据才能完成操作;而Bundle只需要取出再写入即可
②可传递的内容:putExtra不可传递对象,而Bundle可以通过putSerializable传递实现了Serializable接口的对象。(序列化操作在之前有解析,Parcelable和Serializable都可以)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐