Android Activity启动与返回结果详解

0 下载量 76 浏览量 更新于2024-08-29 收藏 80KB PDF 举报
"这篇文档详细解析了如何在Android应用程序中使用`Activity`进行启动并接收返回结果的过程。通过`startActivityForResult()`方法启动新的`Activity`,并利用`onActivityResult()`来获取返回的数据。" 在Android开发中,`Activity`是用户界面的基本单元,它允许用户与应用进行交互。当需要在一个`Activity`中启动另一个`Activity`并获取返回数据时,我们需要使用特定的方法来实现这一功能。以下是对这个过程的深入解析: 1. 启动新Activity并传递请求码: - 使用`startActivityForResult(Intent intent, int requestCode)`方法启动新的`Activity`。`Intent`对象用来描述要启动的`Activity`以及传递给它的数据。`requestCode`是一个整数,用于识别不同的启动请求,以便在结果返回时区分不同的操作。 ```java startActivityForResult(new Intent(MainActivity.this, OtherActivity.class), 1); ``` 在上面的代码中,`MainActivity`启动了`OtherActivity`,并且请求码被设置为1。 2. 在新Activity中处理数据并返回: - 在新启动的`Activity`(如`OtherActivity`)中,执行完所需的操作后,可以通过`setResult()`方法设置返回的结果。可以包括一个结果码(`resultCode`)和一个`Intent`,其中`Intent`可以携带返回的数据。 ```java Intent result = new Intent(); // 设置返回数据 result.putExtra("key", "value"); setResult(resultCode, result); finish(); ``` `resultCode`通常是`RESULT_OK`或`RESULT_CANCELED`,表示操作成功或取消。`Intent`中的数据可以通过`putExtra()`方法添加。 3. 接收返回结果: - 当新启动的`Activity`关闭时,原始`Activity`(这里是`MainActivity`)的`onActivityResult()`方法会被调用。在这里,我们可以根据`requestCode`判断哪个请求返回了结果,并通过`resultCode`和`Intent`获取数据。 ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { if (resultCode == RESULT_OK) { String returnedValue = data.getStringExtra("key"); Log.d(TAG, "Received value: " + returnedValue); // 处理返回的数据 } else if (resultCode == RESULT_CANCELED) { // 处理取消的情况 } } } ``` 在`onActivityResult()`中,我们检查`requestCode`是否匹配之前启动新`Activity`时的请求码,然后根据`resultCode`决定如何处理返回的数据。 这种机制使得在多个`Activity`之间传递数据成为可能,特别适用于需要用户交互并返回结果的场景,例如选择照片、输入数据等。同时,`requestCode`可以用于区分不同的启动请求,确保正确处理来自不同来源的结果。