那么我们如何从一个Activity中启动另一个Activity呢?
Android 并非让一个Activity直接调用另一个Activity,而是用一个称为intent的消息对象促成它们之间的交流。Intent让应用请求执行一个操作,这个操作可以是启动新Activity来从你的手机相册中选择或显示照片或拨打电话。那么我们为什么使用intent而不是直接传入类名呢?可以说intent没那么简单,我将它视为一个信封,其中包含你要交付信息的目标对象或(在这个例子中)目标组件,其中甚至还可以包含少量要交付的数据,作为附加信息打包在其中,作为基本元素,最终接收和打开intent的应用组件可读取这些,所以使用这个比喻很恰当。显式intent使用目标组件的名称。
我们来建立从主Activity到新创建的子Activity的链接。为在两个Activity之间移动,我们调用startActivity()方法,并将intent作为参数,你可能在想既然我们知道具体的目标应用,为何还要用intent呢?记住intent就像信封,可以包裹我们希望新Activity所拥有的一些信息,查看developer.android.com上的文档,在“Activity”(Activity)类下,你可以找到启动Activity的很多方式。我们最关心的是接受intent的签名,但是也有一些变体,允许被调用的Activity向调用者返回结果,可以是对一名联系人或者图库中一张照片的引用。目前,应用会在点击按钮后显示一条Toast消息,而我们希望他做的是启动一个Activity。所以我们现在需要创建intent,像启动Activity的签名一样,我们也有多个intent构造函数选择。由于知道目标Activity,我们可以使用将上下文和类对象作为参数的这个。在Android应用中,Activity可以在任何时候启动和停止。上下文给了我们做某些事情的一种方式,这些事情可能会影响整体应用或超出单个Activity的生命周期。每一个Activity都扩展自上下文,所以我们可以使用MainActiviy.this来检索对上下文的静态引用,作为我们的第一个参数,然后要获取目标类的静态引用,我们使用ChildActivity.class,目前这样的可读性不是很高,我们使用离散变量来让用意更清楚一些。现在,我们使用这些变量上下文和目标Activity去初始化intent,当我们运行应用,并放入一些文本,子Activity便启动了,但这时我们还是会看到默认文本,这是因为我们没有告诉intent我们想要从主Activity传递到子Activity的数据是什么。