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

Activity之间的跳转是Android开发中非常重要的一部分,它通过Intent机制来实现。同时,有时候我们需要从跳转的Activity中获取返回值,这就需要用到Activity的返回值机制。本文将介绍四种Activity的跳转及返回值的方法,包括显示跳转、隐式跳转、带参数跳转以及带返回值跳转,并提供案例说明。

## 一、显示跳转

我们常用的Activity之间的跳转方式就是显示跳转,其跳转的方式就是通过显示指定跳转的目的Activity的类名来实现的。

### 1.1 跳转方法

使用Intent进行显示跳转的代码如下所示:

```Java

//intent的构造方法

Intent intent = new Intent(context, targetActivity.class);

//启动Activity

startActivity(intent);

```

其中,第一个参数为当前Activity的上下文Context对象,第二个参数为目标Activity的类名targetActivity.class。通过调用startActivity()方法启动跳转。

### 1.2 案例说明

例如,在一个名为MainActivity的Activity里面,我们想跳转到另外一个名为SecondActivity的Activity中,使用显示跳转的代码如下所示:

```Java

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//按钮点击事件

Button button = findViewById(R.id.btn_jump_to_second_activity);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//构建Intent对象

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

//启动跳转

startActivity(intent);

}

});

}

}

```

上面的代码中,我们使用了findViewById()来获取一个按钮对象,并给其绑定了一个点击事件,在点击按钮时,构建一个Intent对象并启动跳转。

## 二、隐式跳转

隐式跳转是指借助于Intent的过滤器来实现。我们可以为Activity指定一个intent-filter标签,在标签内设置filter的属性值,来标志这个Activity能够响应的Action、Category或Data信息。

### 2.1 跳转方法

使用Intent进行隐式跳转的代码如下所示:

```Java

//intent的构造方法

Intent intent = new Intent();

//设置Action

intent.setAction("action_name");

//设置Category

intent.addCategory("category_name");

//启动Activity

startActivity(intent);

```

### 2.2 案例说明

例如,在一个名为MainActivity的Activity中,我们想跳转到另外一个可以响应某个特定action的Activity中,使用隐式跳转的代码如下所示:

```Java

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//按钮点击事件

Button button = findViewById(R.id.btn_jump_to_second_activity);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//构建Intent对象

Intent intent = new Intent();

intent.setAction("com.example.app.ACTION_SECOND_ACTIVITY");

//启动跳转

startActivity(intent);

}

});

}

}

```

上面的代码中,我们设置了Intent的Action属性为"com.example.app.ACTION_SECOND_ACTIVITY",也就是告诉Android系统我们要跳转到Action为"com.example.app.ACTION_SECOND_ACTIVITY"的Activity,然后启动跳转。

## 三、带参数跳转

在实际开发中,我们经常需要通过Intent传递一些参数给跳转的Activity,以便目的Activity能够使用这些参数。

### 3.1 跳转方法

使用Intent进行带参数跳转的代码如下所示:

```Java

//intent的构造方法

Intent intent = new Intent(context, targetActivity.class);

//设置参数

intent.putExtra("key1",value1);

intent.putExtra("key2",value2);

//启动Activity

startActivity(intent);

```

其中,setExtra()方法用于为Intent添加参数,可以添加多个参数,通过键值对的方式进行保存和读取。

### 3.2 案例说明

例如,在一个名为MainActivity的Activity中,我们要跳转到另外一个名为SecondActivity的Activity,并且向其传递两个参数:name和age ,其中name的值为“张三”,age的值为20,使用带参数跳转的代码如下所示:

```Java

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//按钮点击事件

Button button = findViewById(R.id.btn_jump_to_second_activity);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//构建Intent对象

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

//添加参数

intent.putExtra("name", "张三");

intent.putExtra("age", 20);

//启动跳转

startActivity(intent);

}

});

}

}

```

上面的代码中,我们设置了Intent的参数为键值对("name","张三")和("age",20),然后启动跳转到SecondActivity。

# 四、带返回值跳转

在有些情况下,我们需要从跳转的Activity中获取返回值,例如在某个编辑Activity中编辑完了某个实体数据后希望返回效果给上一个Activity等。

### 4.1 跳转方法

使用Intent进行带返回值跳转的代码如下所示:

```Java

//intent的构造方法

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

//启动Activity并要求返回值

startActivityForResult(intent, requestCode);

```

其中,requestCode是一个请求码,我们可以在跳转的Activity中根据这个请求码来判断是哪个Activity返回的结果。

### 4.2 案例说明

例如,在一个名为MainActivity的Activity中,我们要跳转到另外一个名为ProfileActivity的Activity,并且从ProfileActivity中获取返回值(name和age),并将其显示到MainActivity中,使用带返回值跳转的代码如下所示:

```Java

public class MainActivity extends AppCompatActivity {

//请求码

private static final int REQUEST_CODE_PROFILE = 100;

//文本框显示

private TextView tvName;

private TextView tvAge;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//按钮点击事件

Button button = findViewById(R.id.btn_jump_to_profile_activity);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//构建Intent对象

Intent intent = new Intent(MainActivity.this, ProfileActivity.class);

//启动带返回值的Activity

startActivityForResult(intent, REQUEST_CODE_PROFILE);

}

});

//文本框对象获取

tvName = findViewById(R.id.tv_profile_name);

tvAge = findViewById(R.id.tv_profile_age);

}

@Override

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

super.onActivityResult(requestCode, resultCode, data);

//获取返回结果

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

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

int age = data.getIntExtra("age", 0);

//显示到文本框中

tvName.setText(name);

tvAge.setText(String.valueOf(age));

}

}

}

```

上面的代码中,我们使用了startActivityForResult()方法启动跳转,并设置了请求码REQUEST_CODE_PROFILE。当ProfileActivity跳转完成后,我们在MainActivity的onActivityResult()方法中根据requestCode判断是哪个Activity返回的结果,并根据返回的结果将数据显示到对应的文本框中。

以上是通过拼接代码,编写的一些基础的跳转的方法和案例,应该可以帮助初学者更好地理解和掌握Activity之间跳转和返回值的机制。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(86) 打赏

评论列表 共有 2 条评论

夏末ζ烟雨 1年前 回复TA

起贝壳的生命来,我在这世间能停留的时间和空间,是不是更长和更多一点呢?是不是也应该用我的能力来把我所能做到的事情做得更精致更仔细更加地一丝不苟呢?

神经质的生活 1年前 回复TA

愿明亮喜庆的新年烛光温暖一年中的每个日日夜夜,祝你欢欢喜喜度新年!

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