不管你想创建多少个活动,方法都和上一篇文章中介绍的是一样的。唯一的问题在于,你在启动器中点击应用的图标只会进入到该应用的主活动,那么怎样才能由主活动跳转到其他活动呢?我们现在就来一起看一看。
Intent 介绍
Intent 是 Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent 一般可被用于启动活动、启动服务、以及发送广播等场景。
Intent 的用法大致可以分为两种,显式 Intent 和隐式 Intent。
使用显式 Intent
现在快速地在 ActivityTest 项目中再创建一个活动。新建一个 second_layout.xml
布局文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_second"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="pub.weber.bym.activitytest.SecondActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button_2"
android:text="Button2"/>
</LinearLayout>
我们还是定义了一个按钮,按钮上显示 Button 2 。然后新建 活动 SecondActivity 继承 Activity ,代码如下:
package pub.weber.bym.activitytest;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Window;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_second);
}
}
最后在 AndroidManifest.xml 中为SecondActivity 进行注册。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pub.weber.bym.activitytest">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="第一个程序">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity">
</activity>
</application>
</manifest>
由于 SecondActivity 不是主活动,因此不需要配置 <intent-filter>
标签里的内容。
Intent有多个构造函数的重载,其中一个是 Intent(Context packageContext, Class<?> cls)
。这个构造函数接收两个参数,第一个参数 Context 要求提供一个启动活动的上下文,第二个参数 Class 则是指定想要启动的目标活动,通过这个构造函数就可以构建出 Intent 的“意图”。
Activity 类中提供了一个 startActivity()
方法,这个方法是专门用于启动活动的,它接收一个Intent参数,这里我们将构建好的Intent传入startActivity()
方法就可以启动目标活动了。
修改 MainActivity 中按钮的点击事件,代码如下所示:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
首先构建出了一个 Intent ,传入 MainActivity.this
作为上下文,传入 SecondActivity.class
作为目标活动,在 FirstActivity 这个活动的基础上打开 SecondActivity 这个活动。然后通过 startActivity()
方法来执行这个 Intent。
运行程序,在 MainActivity 的界面点击一下按钮,结果如图所示:
可以看到,我们已经成功启动 SecondActivity 这个活动了。如果你想要回到上一个活动怎么办呢?很简单,按下 Back 键就可以销毁当前活动,从而回到上一个活动了。