一、Activity概念介绍

  activity属于android的四大组件之一(其他的三个: Content provider,Broadcast receiver,Service),它可以理解为一个视窗,一个与用户进行交互的窗口,一个Activity通常就占据一个屏幕。每个Activity都是一个单独的类,并且要继承Activity。

  Activity类的继承关系:------->Activity出在android.app包下

  直接子类:AccountAuthenticatorActivityActivityGroupAliasActivityExpandableListActivityFragmentActivityListActivityNativeActivity

  间接之类:ActionBarActivityLauncherActivityPreferenceActivityTabActivity

  也就是说,你要创建一个activity你可以根据自己的需要直接继承上述Activity类。当然你可以根据在项目中的需要创建自己需要的Activity子类类,前提是必须继承Activity。如:BaseActivity extends  Activity。

二、Activity创建

  创建Actvity首先要继承Actvity,然后如果是创建工程的第一个Actviity,系统会默认在Manifest文件中声明这个Activity;如果不是创建的第一个Activity,那么就要自己在Manifest文中声明你所创建的Activity了。声明要放在application标签下。

  Manifest文件:  

  <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="org.david.work.wifisingledemo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

解析:android:name声明的是这个activity的名称,也可以直接写成.MainActivity

   android:label声明的这是这个application的名称

    里面意图过滤器还包含两个元素声明:

    action节点中的android.intent.action.MAIN表明它所在的Activity是整个应用程序的入口点.

    category中的android.intent.category.LAUNCHER意思是把这个Activityg归属到加载器类,即把这个Activity标注为自动会加载和启动的Activity,这样程序启动时候就先加载这个     Activity了.

    这两个标签说明了此Activity为整个Applicaion的主Acitivity,程序入口。类似c语言的Main函数。(我个人这么理解)

在Manifest文件中声明完Activity之后,接下来就要复写oncreat()方法,通过在oncreat()方法中调用setContentView函数加载所需布局。如:                                                                                      这样一个Activity就算是基本创建好了。

  

三、Activity启动切换

  activity的启动分为显式启动和隐式两种方式。

  显示启动:

    

 Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);

  隐式启动:

 <activity
android:name=".SecondActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="org.david.work.wifisingledemo.SecondActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
 String action = "org.david.work.wifisingledemo.SecondActivity";
Intent intent = new Intent(action);
startActivity(intent);

注释:即使在manifest文件中声明了action和category只要是显示启动也会忽略intent-filter中的声明。隐式启动中如果manifest文件中声明的action和category有两个activity声明的相同,那么系统会弹出一个对话让用户选择启动哪一个activity。

四、Activity间的数据传递

  activity之间是可以传递数据,这样就能很方面的从上一个交互界面中获取数据供当前交互界面使用,处理。启动一个activity是通过intent,这个意图来启动相应的activity的,那么传递数据也不难猜想到肯定也是跟这个东西有关了。intent通过putExtra()这个函数来放数据。可以放入的数据类型有:int,double,short,char,String, CharSequence,Bundle,Serializable ,boolean,Parcelable ...等等(参考官方api)。

  例:

 Intent intent = new Intent(action);
Bundle bundle = new Bundle();
bundle.putString("sayword", "hello!");
intent.putExtras(bundle);

  接收数据:

Intent intent = this.getIntent();
Bundle extras = intent.getExtras();
String data = (String) extras.get("sayword");
Log.v(TAG, data);

  下篇将主要写一下Activity的生命周期!!!

Android学习整理之Activity篇的更多相关文章

  1. Android学习整理之Activity生命周期篇

    一.Activity生命周期说明   Activity的四种状态: ⒈活动状态(Active or Running):也称为运行状态,处于Activity栈顶,在用户界面中最上层,完全能被用户看到,能 ...

  2. android学习二(Activity)

    前面我简单的介绍了android的一些基础知识,当作热身吧,接下来接触android的四大组件的activity活动. 1.活动Activity是是一种保护用户界面的组件,主要用于和用户进行交互. 活 ...

  3. android学习四(Activity的生命周期)

    要学好活动(Activity).就必需要了解android中Activity的声明周期.灵活的使用生命周期.能够开发出更好的程序,在android中是使用任务来管理活动的,一个任务就是一组存放在栈里的 ...

  4. Android学习笔记之Activity详解

    1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...

  5. android学习笔记26——Activity

    Activity ==> android中四大组件:Activity.Service.BroadcastReceiver.ContentProvider Activity组件用于对用户呈现操作界 ...

  6. Android学习笔记:Activity生命周期详解

    进行android的开发,必须深入了解Activity的生命周期.而对这个讲述最权威.最好的莫过于google的开发文档了. 本文的讲述主要是对 http://developer.android.co ...

  7. Android学习——Fragment与Activity通信(一)

    学会了在Activity中加载Fragment的方法之后,接下来便需要学习Activity和Fragment之间的通信.这一节先学习如何把Activity中的信息传递给Fragment. 基本过程 在 ...

  8. android学习笔记28——Activity生命周期

    Activity生命周期 Activity的活动状态由android已Activity栈的形式管理,当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都有可能从活动状态转入非 ...

  9. android学习笔记27——Activity

    Activity配置==> android应用程序要求所有的应用程序组件都需要进行显示配置后,才可正常使用.包括:Activity.Service.BroadCastReceiver.Conte ...

随机推荐

  1. PCA原理(转)

    PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...

  2. SpringDataJPA模糊查询遇到的坑

    遇到的情况:在做短信渠道管理添加时,先要去校验数据库中是否有该产线-短信类型-渠道的记录,如果存在就不添加. //在库中是否存在该记录 private boolean ifExistChannelCo ...

  3. 201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。

    这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的 ...

  4. web程序的配置文件的修改

    vs上面的config与wwwroot中的config有可能不一样,注意修改配置的资源路径及ip及数据库及禁止ip

  5. socket接口详解

    1. socket概述 socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在Unix一切 ...

  6. php Pthread 多线程 (四) 共享内存

    有些时候我们希望在多个线程中共享一些需要的数据,我们可以使用shmop扩展. <?php class Count extends Thread { private $name = ''; pub ...

  7. 图像获取与采集及图像格式与Region介绍——第2讲

    一.图像获取与采集 1.本地图片读取 ① 单张读取 直接传入图片路径即可,可以用绝对路径,也可以用相对路径: read_image (Image, 'C:/Users/Administrator/De ...

  8. iOS.AddFont

    为iOS App 添加定制字体 http://www.developers-life.com/how-to-include-ttf-fonts-to-ios-app.html http://blog. ...

  9. mysql 执行多线程临时方案

    sqr::IDatabase *db=NULL;IDbConnection *conn = NULL;int main(int argc, char* argv[]) { db = GetDataba ...

  10. 学习类App原型制作分享-Wokabulary

    Wokabulary是一款多功能词汇学习App,可以学习多国语言词汇.原型的引导页面采用的图片+文字+分页器,需要注意的是分页器选中位置要与页面顺序一致.其次是语言的选择页面,在前面给大家介绍过滚动区 ...