Activity详解 (一) : Activity的创建与启动
2016-02-23 16:55
357 查看
Activity是我们常用的组件之一,今天我们对Acivity的知识点进行重温和整理。
《Activity详解 (一) : Activity的创建与启动》
《Activity详解 (二) : Activity生命周期》
《Activity详解 (三) : Activity启动模式》
《Activity详解 (四) : 保存Activity状态》
《Activity详解 (五) : startActivityForResult()与onActivityResult()》
《Activity详解 (六) : Activity中常用函数说明》
创建一个类继承Activity
从写onCreate(Bundle)方法
创建一个xml布局
调用setContentView(int)方法设置布局
配置AndroidManifest.xml文件
我们看看具体的代码,首先来看看xml布局代码:
Activity代码如下:
这样我们的Activity就编写好了。但是现在我们运行程序却显示不出来我们创建的Activity,原因是我们新创建的Activity实例都需要在AndroidManifest.xml文件中进行注册才可以使用。
上面是AndroidManifest.xml的代码,其中结点就是我们注册Activity的代码,其中android:name是我们要注册的Activity类名,这里我们使用的是相对路径,这个名字要全路径,即要包含包名,因为系统要通过这个字符串来查找我们的Activity实例类。
那么这个结点中的内容是干什么的呢?
这两行代码指定了FirstActivity为“主”Activity,即首次启动应用程序会先显示FirstActivity。如果我们将多个activity结点都加上如上代码则安装应用程序之后手机桌面上回出现相同数量的启动图标,点击不同的图片会启动不同的Activity,不过通常情况下我们只指定一个Activity为主Activity即可。多个Activity之间通过Intent进行跳转。
通过上面的步骤我们的Activity就创建好了。我们运行程序效果如下:
启动一个Activity需要使用一下代码,例如我们让Activity启动另一个名为SignInActivity的Activity:
如果我们想传递数据需要调用Intent的putExtra()方法,例如:
您的应用可能还需要利用您的 Activity 数据执行某项操作,例如发送电子邮件、短信或状态更新。 在这种情况下,您的应用自身可能不具有执行此类操作所需的 Activity,因此您可以改为利用设备上其他应用提供的 Activity 为您执行这些操作。 这便是 Intent 对象的真正价值所在—您可以创建一个 Intent 对象,对您想执行的操作进行描述,系统会从其他应用启动相应的 Activity。 如果有多个 Activity 可以处理 Intent,则用户可以选择要使用哪一个。 例如,如果您想允许用户发送电子邮件,可以创建以下 Intent 对象:
关于Intent的使用后面会有专门的文章来详细介绍,这里就不过多介绍了。启动Activity还可以调用startActivityForResult()方法,关于这个方法我们也会单独在后面 介绍。
《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()方法,关于这个方法我们也会单独在后面 介绍。
相关文章推荐
- Apache Curator快速入门
- 记录iOS中的或者Xcode中的小技巧,小知识点
- 苹果手机的html 手势,点击事件
- ACM数论之旅16---母函数(又名生成函数)(痛并快乐着(╭ ̄3 ̄)╭)
- Pyqt4学习笔记-窗口组件(更新ing)
- [Leetcode]@python 95. Unique Binary Search Trees II
- Lucene 3.0
- linux下串口应用程序
- 在Android app中实现九(n)宫格图片连续滑动效果
- JS之数组相关
- 附件另存失败或者在线查看空白等问题解决方法
- iOS UIKit - UIScrollView
- 一知名互联网公司上线流程
- java中线程同步
- 混合使用Azure LB和ILB访问相同web服务(2)
- ArcGIS License Manager 10.1 :FLEXlm Error: -15, 10. System Error: 10061"WinSock: Connection ref的问题解决
- Unix高级IO之多线程编程 ——用户级线程和内核级线程
- 列表多选框的选择
- Maven学习 (四) 使用Nexus搭建Maven私服(WINDOWS)
- RQNOJ 142 拜年