Android中Activity之间的数据传递和Intent使用
首先介绍一下Activity:Activity是Android的四大组件之一,Activity参与的工作大多和操作界面有关。
在我的下一篇文章会重点介绍关于Activity生命周期的内容,这篇文章先不管这个部分。
关于Activity启动的方式:
- 一个程序通常会包含多个Activity,但是只有一个Activity会作为程序的主入口,就是第一个启动的Activity。
- 如果当前的Activity不是程序第一个启动的Activity那么这个Activity的启动方式就只能是由其他的Activity来启动
- startActivity(Intent intent) :当前的Activity调用这个方法,直接启动其他的Activity
- startActivityForResult(Intent intent, int requestCode):用请求码来启动新Activity,而且原来的Activity将会在新Activity中获取到数据返回。
关于Android关闭的方法:
- finish():结束当前的Activity
- finishActivity(int requestCode):结束用startActivityForResult方法启动的Activity
使用Bundle在Activity之间交换数据:
我们在上面看到Activity之前的跳转一直会有用到一个参数intent,这东西其实就是一个信使,Activity之间数据交换的媒介,我们主要将数据放入intent即可。
Android为intent提供了很多put和get方法来进行数据的存取,但是有一个非常便利的东西叫做Bundle
,它是intent里面的一个简单的数据包,如果直接使用intent来存取数据会显得很乱,所以我们通常让bundle来帮我们打包数据,intent也主要用bundle来携带数据。
注意:在没有创建Bundle对象时,如果向Intent存入数据,Intent会自行创建一个Bundle对象,再向Bundle存入数据
之前在做项目的时候在登录界面就是通过Bundle对象来存储登录信息,在完成登录后结束当前的Activity,并且通过Intent将结果返回到新的Activity中去
下面通过一个实例来介绍一下上面所讲的内容: 首先是一个xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"