androidInter
在Android开发中,`Intent`是连接各个组件(如Activity、Service、BroadcastReceiver)的核心机制。本主题将深入探讨`androidInter`,特别是`startActivityForResult`和`startActivity`这两个与`Intent`相关的API。 让我们了解`Intent`的基本概念。`Intent`是一种消息传递对象,用于在Android应用程序的不同组件之间传递请求或信息。它可以用来启动一个新的Activity,或者调用一个Service来执行后台任务。 1. **startActivity()** `startActivity(Intent intent)` 是Android中最常见的方法,用于启动一个新的Activity。当你希望从当前Activity跳转到另一个Activity时,你会创建一个`Intent`对象,然后调用这个方法。例如: ```java Intent intent = new Intent(this, TargetActivity.class); startActivity(intent); ``` 这行代码会从当前的Activity跳转到名为`TargetActivity`的Activity。`this`表示当前上下文,即调用`startActivity`的方法所在的Activity。 2. **startActivityForResult()** `startActivityForResult(Intent intent, int requestCode)` 是一个更强大的方法,它不仅启动新的Activity,还允许你从新Activity返回结果。这在你需要从一个Activity获取数据(比如用户选择的照片或输入的数据)并传回原始Activity时非常有用。`requestCode`是一个整数,用于标识请求来源,以便在`onActivityResult()`中区分不同的请求。 例如,假设你正在创建一个应用,需要让用户从相册中选择一张图片,你可以这样使用`startActivityForResult()`: ```java Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, SELECT_IMAGE_REQUEST_CODE); ``` 在新Activity(这里是系统相册)选择图片后,会调用原始Activity的`onActivityResult()`方法,你可以在这里处理返回的结果: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == SELECT_IMAGE_REQUEST_CODE && resultCode == RESULT_OK && data != null) { Uri selectedImage = data.getData(); // 处理选中的图片 } } ``` 3. **交互流程** 使用`startActivityForResult()`时,基本的交互流程如下: - 调用`startActivityForResult()`启动新Activity。 - 新Activity执行完毕后,可以使用`setResult(int resultCode, Intent data)`设置结果并结束自身。 - 原始Activity的`onActivityResult()`方法会被调用,你可以在这里处理返回的数据。 4. **注意事项** - 当使用`startActivityForResult()`时,确保新启动的Activity能够正确设置结果。如果新Activity没有调用`setResult()`,则`onActivityResult()`不会被触发。 - 请求码`requestCode`应该具有唯一性,以避免混淆不同来源的结果。 - `RESULT_OK`通常表示操作成功,而`RESULT_CANCELED`表示用户取消操作。开发者也可以自定义其他结果代码。 - `data` Intent可以携带返回的数据,例如选择的文件URI、用户输入的信息等。 以上就是关于`startActivity()`和`startActivityForResult()`的基本介绍和使用场景。在实际开发中,这两个方法对于构建交互丰富的Android应用至关重要。通过熟练掌握它们,你可以实现各种复杂的组件间通信和数据交换。在`InterDemo001`这样的项目中,你可能会看到如何将这些理论知识应用到实际的代码实现中。
- 1
- 粉丝: 2
- 资源: 36
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助