Android中的Intent功能演示

Intent(中文一般译为:意图) 是 Android 中非常重要的一个概念,功能强大。一个 Intent 其实可以看做一个封装了指令及参数的数据结构,它可以用来来启动另一个 Activity, 或是通过发送广播到任何对它感兴趣的广播接受器组件,又或是用它来启动服务(Service)。 本文对 Intent 的功能进行演示。

启动 Activity

启动 Activity 可能是 Intent 功能中最直观,也是最简单的情况,使用这个功能作为入门。代码段如下(假设从 MainActivity 中打开 TodoActivity):

1
2
Intent intent = new Intent(MainActivity.this, TodoActivity.class);
startActivity(intent);

带参数启动 Activity

通过使用 intent 的 putExtra 方法就可以向另一个 Activity 传递参数。 putExtra 有很多的重载函数,可以传递不同类型的数据。扩充上面的示例,可以得到如下代码:

1
2
3
4
Intent intent = new Intent(MainActivity.this, TodoActivity.class);
intent.putExtra("username", "Tom");
intent.putExtra("isAdmin", false);
startActivity(intent);

要在目标 Activity 中接收参数需要首先获取 Intent, 在 Activity 类中已经提供了 getIntent 方法用于获取传递过来的 Intent, 然后可以调用 getXXXExtra 方法获取不同类型的参数,XXX 用具体的类型替换,对应上面传参的代码如下:

1
2
3
Intent intent = this.getIntent();
String username = intent.getStringExtra("username");
boolean isAdmin = intent.getBooleanExtra("isAdmin", false);

获取 Activity 的返回值

如果需要从被调用的 Activity 中获取返回值,那整个调用就会稍微复杂一点。

首先,需要用 startActivityForResult 代替 startActivity 完成打开 Activity 的任务:

1
2
Intent intent = new Intent(MainActivity.this, TodoActivity.class);
startActivityForResult(intent, 0);

其中第二个参数:0 是请求码(requestCode),用于标识该请求。

其次,需要在调用 Activity (在示例中是 MainActivity)中重写一个函数用于处理返回结果:

1
2
3
4
5
6
7
@Override
public void onActivityResult(int requestCode , int resultCode, Intent intent) {
if (requestCode == 0 && resultCode == 1) {
Boolean success = intent.getBooleanExtra("success", false);
Log.d(TAG, "success = " + success);
}
}

注意: 第三行的判断,通过请求码(requestCode)和返回码(resultCode)来确定返回值应用场景。

最后,在被调用 Activity 中编写返回值的逻辑。

1
2
3
4
Intent intent = this.getIntent();
intent.putExtra("success", true);
TodoActivity.this.setResult(1, intent);
TodoActivity.this.finish();

本文标题:Android中的Intent功能演示

文章作者:梅老师

发布时间:2019年08月11日 - 15:08

最后更新:2020年09月16日 - 08:09

原始链接:https://www.mls-tech.info/app/android/android-intent-and-filter/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。