Activity的跳转及返回值 的四种方法

在Android开发中,Activity是不可避免的一个重要组件。Activity之间的跳转及数据交互也是我们经常需要处理的问题。本文将介绍四种常用的Activity跳转及返回值的方法,并分别给出详细的介绍和示例。

一、使用Intent传递数据

我们可以通过Intent在两个Activity之间传递数据,这在Android开发中也是最常见的方法之一。

1.向目标Activity传递数据

首先,在源Activity中创建一个Intent对象,并添加需要传递的数据,例如:

```java

// 创建要启动的目标Activity的Intent对象

Intent intent = new Intent(this, TargetActivity.class);

// 添加需要传递的数据

intent.putExtra("name", "Tom");

intent.putExtra("age", 18);

// 启动目标Activity

startActivity(intent);

```

以上代码中,我们首先创建了一个Intent对象,并指定了目标Activity(TargetActivity)。接下来,我们使用 `putExtra` 方法添加需要传递的数据,可以添加多个数据,每个数据都需要指定一个键(键值对类型),以便在目标Activity中获取其值。最后使用 `startActivity` 方法启动目标Activity。

2.在目标Activity中获取数据

在目标Activity中,我们可以使用 `get Intent` 方法获取由源Activity传递过来的Intent,然后从Intent中获取传递的数据,例如:

```java

// 获取从源Activity传递过来的数据

Intent intent = getIntent();

String name = intent.getStringExtra("name");

int age = intent.getIntExtra("age", 0); // 第二个参数是默认值,可以根据需要设定

```

以上代码中,我们使用 `getIntent` 方法获取传递过来的Intent。接着使用 `getStringExtra` 和 `getIntExtra` 方法分别获取传递的字符串和整型数据。

二、使用Bundle传递数据

除了使用Intent传递数据外,我们还可以使用Bundle对象来传递数据。

1.向目标Activity传递数据

在源Activity中,创建一个Bundle对象,并添加需要传递的数据,例如:

```java

// 创建要启动的目标Activity的Intent对象

Intent intent = new Intent(this, TargetActivity.class);

// 创建Bundle对象,并添加需要传递的数据

Bundle bundle = new Bundle();

bundle.putString("name", "Tom");

bundle.putInt("age", 18);

intent.putExtras(bundle);

// 启动目标Activity

startActivity(intent);

```

以上代码中,我们创建了一个Bundle对象,并使用 `putString` 和 `putInt` 方法添加需要传递的数据。然后将Bundle对象添加到Intent中,最后使用 `startActivity` 启动目标Activity。

2.在目标Activity中获取数据

在目标Activity中,我们可以使用 `get Extras` 方法获取Bundle对象,然后从Bundle对象中获取传递的数据,例如:

```java

// 获取从源Activity传递过来的数据

Bundle bundle = getIntent().getExtras();

String name = bundle.getString("name");

int age = bundle.getInt("age", 0); // 第二个参数是默认值,可以根据需要设定

```

以上代码中,我们使用 `get Extras` 方法获取传递过来的Bundle对象。然后使用 `getString` 和 `getInt` 方法分别获取传递的字符串和整型数据。

三、使用静态变量传递数据

在Android开发中,我们可以使用一个静态变量来传递数据。这种方法简洁明了,但是只适用于数据量较少的情况。

1.定义静态变量

在目标Activity中,定义一个静态变量,例如:

```java

public class TargetActivity extends AppCompatActivity {

public static String name = "";

public static int age = 0;

// ...

}

```

以上代码中,我们定义了两个静态变量 `name` 和 `age`。

2.设置静态变量的值

在源Activity中,通过访问目标Activity的静态变量来设置它的值,例如:

```java

// 设置目标Activity的静态变量

TargetActivity.name = "Tom";

TargetActivity.age = 18;

// 启动目标Activity

startActivity(new Intent(this, TargetActivity.class));

```

以上代码中,我们通过访问另一个Activity的静态变量来设置它的值。最后使用 `startActivity` 方法启动目标Activity。

3.在目标Activity中获取数据

在目标Activity中,我们可以直接访问静态变量,例如:

```java

String name = TargetActivity.name;

int age = TargetActivity.age;

```

以上代码中,我们直接访问目标Activity的静态变量来获取传递的数据。

四、使用startActivityForResult和onActivityResult传递数据

在有些情况下,我们需要从目标Activity返回数据给源Activity。为了实现这个功能,我们可以使用 `startActivityForResult` 和 `onActivityResult` 方法来传递数据。

1.向目标Activity传递数据并获取返回值

在源Activity中,通过 `startActivityForResult` 方法启动目标Activity,并传递需要的数据,例如:

```java

// 创建要启动的目标Activity的Intent对象

Intent intent = new Intent(this, TargetActivity.class);

// 添加需要传递的数据

intent.putExtra("name", "Tom");

intent.putExtra("age", 18);

// 启动目标Activity

startActivityForResult(intent, 1);

```

以上代码中,我们使用 `startActivityForResult` 方法来启动目标Activity,并通过第二个参数(请求码)指定一个标识符。这个标识符可以用来在目标Activity返回结果时识别来源。

在目标Activity中,我们可以通过 `setResult` 方法设置返回值,并使用 `finish` 方法关闭Activity,例如:

```java

// 在目标Activity中设置返回值和关闭Activity

Intent intent = new Intent();

intent.putExtra("result", "success");

setResult(RESULT_OK, intent);

finish();

```

以上代码中,我们创建了一个Intent对象,并添加了一个返回值("result"),然后使用 `setResult` 方法设置返回结果,并调用 `finish` 方法关闭Activity。

2.在源Activity中获取返回值

在源Activity中,我们可以通过 `onActivityResult` 方法获取目标Activity返回的结果,例如:

```java

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1 && resultCode == RESULT_OK) {

String result = data.getStringExtra("result");

// 处理返回结果

}

}

```

以上代码中,我们重写了 `onActivityResult` 方法,并根据传递时指定的标识符(requestCode)和返回结果(resultCode)来判断是否获取到了一个正确的结果。如果返回结果正确,我们可以使用 `getStringExtra` 方法获取设置的返回结果("result")。

总结

以上是四种常用的Activity跳转及返回值的方法。Android开发中,这些方法非常常用,也非常重要。在实际的开发过程中,我们可以根据需要灵活运用这些方法来实现不同的功能。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(47) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部