StartActivityForResult在Android中的使用方法详解 ===================================
你是否曾经在Android开发中遇到过这样的困扰:如何在一个Activity结束时返回数据给前一个Activity?或者你可能已经听过`startActivityForResult`这个方法,但是并不清楚如何使用或者它的真正用途是什么。如果你有这样的疑惑,那么请继续阅读。我们将深入探讨`startActivityForResult`的使用方法和它在Android开发中的实际应用。
首先,让我们解答一个经常引发争议的问题:`startActivityForResult`和`startActivity`之间有什么区别?
主要区别 ----
尽管这两个方法在字面上都用于启动一个新的Activity,但是它们的行为是不同的。`startActivity`仅仅是启动一个新的Activity,而当前的Activity会继续存在直到用户返回。然而,`startActivityForResult`不仅会启动一个新的Activity,而且会结束当前的Activity。换句话说,使用`startActivityForResult`后,当新的Activity被关闭时,前一个Activity会重新出现。
使用方法 ----
了解了这两个方法的基本区别后,让我们看看如何在Android中实际使用`startActivityForResult`。
### 步骤1:启动新的Activity
和通常一样,我们首先需要启动一个新的Activity。这可以通过调用`Context.startActivity()`方法并传递一个`Intent`来完成。
```java Intent intent = new Intent(this, SecondActivity.class); startActivityForResult(intent, REQUEST_CODE); ``` 在这里,`REQUEST_CODE`是一个任意的整数,用于在结果被返回时识别请求。你可以使用任何未被使用的请求代码,但是最好是使用静态常量来存储这些代码,以便于后续的查询和使用。
### 步骤2:结束当前的Activity
在启动新的Activity后,当前的Activity将很快被结束。系统将处理这个结束,你不需要显式地调用任何方法来结束当前的Activity。
### 步骤3:返回数据
在新Activity结束时,你可以通过调用`setResult()`方法并传递一个`Intent`来返回数据。`Intent`可以包含任何你希望返回的数据。
```java Intent data = new Intent(); data.putExtra("key", "value"); setResult(Activity.RESULT_OK, data); finish(); ``` 在这里,我们通过键值对的方式添加了一些数据,并使用`RESULT_OK`来表示操作成功。当然,你也可以使用其他的结果代码来表示不同的状态。然后我们调用`finish()`来关闭当前的Activity。这会触发`onActivityResult`方法在原始的Activity中。
### 步骤4:接收结果
最后,在你的原始Activity中,你需要覆盖`onActivityResult`方法来接收和处理结果。
```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE) { if (resultCode == Activity.RESULT_OK) { String result = data.getStringExtra("key"); // 处理返回的数据 } else if (resultCode == Activity.RESULT_CANCELED) { // 处理取消操作的结果 } else { // 处理其他结果代码的情况 } } } ``` 在这里,我们首先检查请求代码是否与我们在启动新Activity时使用的请求代码匹配。如果匹配,我们进一步检查结果代码并获取返回的数据。你可以根据你的需要处理不同的结果代码和数据。
新起点 超级网址导航
