Intent(中文一般译为:意图) 是 Android 中非常重要的一个概念,功能强大。一个 Intent 其实可以看做一个封装了指令及参数的数据结构,它可以用来来启动另一个 Activity, 或是通过发送广播到任何对它感兴趣的广播接受器组件,又或是用它来启动服务(Service)。 本文对 Intent 的功能进行演示。
启动 Activity
启动 Activity 可能是 Intent 功能中最直观,也是最简单的情况,使用这个功能作为入门。代码段如下(假设从 MainActivity 中打开 TodoActivity):
1 | Intent intent = new Intent(MainActivity.this, TodoActivity.class); |
带参数启动 Activity
通过使用 intent 的 putExtra 方法就可以向另一个 Activity 传递参数。 putExtra 有很多的重载函数,可以传递不同类型的数据。扩充上面的示例,可以得到如下代码:
1 | Intent intent = new Intent(MainActivity.this, TodoActivity.class); |
要在目标 Activity 中接收参数需要首先获取 Intent, 在 Activity 类中已经提供了 getIntent 方法用于获取传递过来的 Intent, 然后可以调用 getXXXExtra 方法获取不同类型的参数,XXX 用具体的类型替换,对应上面传参的代码如下:
1 | Intent intent = this.getIntent(); |
获取 Activity 的返回值
如果需要从被调用的 Activity 中获取返回值,那整个调用就会稍微复杂一点。
首先,需要用 startActivityForResult 代替 startActivity 完成打开 Activity 的任务:
1 | Intent intent = new Intent(MainActivity.this, TodoActivity.class); |
其中第二个参数:0 是请求码(requestCode),用于标识该请求。
其次,需要在调用 Activity (在示例中是 MainActivity)中重写一个函数用于处理返回结果:
1 |
|
注意: 第三行的判断,通过请求码(requestCode)和返回码(resultCode)来确定返回值应用场景。
最后,在被调用 Activity 中编写返回值的逻辑。
1 | Intent intent = this.getIntent(); |