您的位置:首页 > 其它

Activity详解 (一) : Activity的创建与启动

2016-02-23 16:55 357 查看
Activity是我们常用的组件之一,今天我们对Acivity的知识点进行重温和整理。

《Activity详解 (一) : Activity的创建与启动》

《Activity详解 (二) : Activity生命周期》

《Activity详解 (三) : Activity启动模式》

《Activity详解 (四) : 保存Activity状态》

《Activity详解 (五) : startActivityForResult()与onActivityResult()》

《Activity详解 (六) : Activity中常用函数说明》

Activity简介

Activity是Android四大组件之一,也是使用频率最高的组件之一。 Activity是一个应用组件,用户可与其提供的屏幕进行交互,每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。

如何创建一个Activity

通常创建一个Activity分为如下几个步骤:

创建一个类继承Activity

从写onCreate(Bundle)方法

创建一个xml布局

调用setContentView(int)方法设置布局

配置AndroidManifest.xml文件

我们看看具体的代码,首先来看看xml布局代码:

[code]<?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">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="第一个Activity"/>

</LinearLayout>


Activity代码如下:

[code]package com.activitydemo;

import android.app.Activity;
import android.os.Bundle;

/**
 * 1.创建一个类继承Activity
 */
public class FirstActivity extends Activity {

    /**
     * 2.重写onCreate(Bundle)方法
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 3.调用setContentView(int)方法设置布局
        setContentView(R.layout.activity_first);
    }
}


这样我们的Activity就编写好了。但是现在我们运行程序却显示不出来我们创建的Activity,原因是我们新创建的Activity实例都需要在AndroidManifest.xml文件中进行注册才可以使用。

[code]<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.activitydemo" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".FirstActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


上面是AndroidManifest.xml的代码,其中结点就是我们注册Activity的代码,其中android:name是我们要注册的Activity类名,这里我们使用的是相对路径,这个名字要全路径,即要包含包名,因为系统要通过这个字符串来查找我们的Activity实例类。

那么这个结点中的内容是干什么的呢?

[code]<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />


这两行代码指定了FirstActivity为“主”Activity,即首次启动应用程序会先显示FirstActivity。如果我们将多个activity结点都加上如上代码则安装应用程序之后手机桌面上回出现相同数量的启动图标,点击不同的图片会启动不同的Activity,不过通常情况下我们只指定一个Activity为主Activity即可。多个Activity之间通过Intent进行跳转。

通过上面的步骤我们的Activity就创建好了。我们运行程序效果如下:



启动Activity

启动一个Activity可以调用Activity的startActivity()方法,Intent 对象会指定您想启动的具体 Activity 或描述您想执行的操作类型(系统会为您选择合适的 Activity,甚至是来自其他应用的 Activity)。 Intent 对象还可能携带少量供所启动 Activity 使用的数据。

启动一个Activity需要使用一下代码,例如我们让Activity启动另一个名为SignInActivity的Activity:

[code]Intent intent = new Intent(this, SignInActivity.class);
startActivity(intent);


如果我们想传递数据需要调用Intent的putExtra()方法,例如:

[code]Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(“tag", “data");
startActivity(intent);


您的应用可能还需要利用您的 Activity 数据执行某项操作,例如发送电子邮件、短信或状态更新。 在这种情况下,您的应用自身可能不具有执行此类操作所需的 Activity,因此您可以改为利用设备上其他应用提供的 Activity 为您执行这些操作。 这便是 Intent 对象的真正价值所在—您可以创建一个 Intent 对象,对您想执行的操作进行描述,系统会从其他应用启动相应的 Activity。 如果有多个 Activity 可以处理 Intent,则用户可以选择要使用哪一个。 例如,如果您想允许用户发送电子邮件,可以创建以下 Intent 对象:

[code]Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);


关于Intent的使用后面会有专门的文章来详细介绍,这里就不过多介绍了。启动Activity还可以调用startActivityForResult()方法,关于这个方法我们也会单独在后面 介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: