如何使用显式 Intent

不管你想创建多少个活动,方法都和上一篇文章中介绍的是一样的。唯一的问题在于,你在启动器中点击应用的图标只会进入到该应用的主活动,那么怎样才能由主活动跳转到其他活动呢?我们现在就来一起看一看。

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 键就可以销毁当前活动,从而回到上一个活动了。

by web开发者 from http://weber.pub/

本文地址: http://weber.pub/安卓笔记5-如何使用显式-intent/291.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章