Android学习整理之Activity篇
一、Activity概念介绍
activity属于android的四大组件之一(其他的三个: Content provider,Broadcast receiver,Service),它可以理解为一个视窗,一个与用户进行交互的窗口,一个Activity通常就占据一个屏幕。每个Activity都是一个单独的类,并且要继承Activity。
Activity类的继承关系:------->Activity出在android.app包下
直接子类:AccountAuthenticatorActivity, ActivityGroup, AliasActivity, ExpandableListActivity, FragmentActivity, ListActivity, NativeActivity
间接之类:ActionBarActivity, LauncherActivity, PreferenceActivity, TabActivity
也就是说,你要创建一个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篇的更多相关文章
- Android学习整理之Activity生命周期篇
一.Activity生命周期说明 Activity的四种状态: ⒈活动状态(Active or Running):也称为运行状态,处于Activity栈顶,在用户界面中最上层,完全能被用户看到,能 ...
- android学习二(Activity)
前面我简单的介绍了android的一些基础知识,当作热身吧,接下来接触android的四大组件的activity活动. 1.活动Activity是是一种保护用户界面的组件,主要用于和用户进行交互. 活 ...
- android学习四(Activity的生命周期)
要学好活动(Activity).就必需要了解android中Activity的声明周期.灵活的使用生命周期.能够开发出更好的程序,在android中是使用任务来管理活动的,一个任务就是一组存放在栈里的 ...
- Android学习笔记之Activity详解
1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...
- android学习笔记26——Activity
Activity ==> android中四大组件:Activity.Service.BroadcastReceiver.ContentProvider Activity组件用于对用户呈现操作界 ...
- Android学习笔记:Activity生命周期详解
进行android的开发,必须深入了解Activity的生命周期.而对这个讲述最权威.最好的莫过于google的开发文档了. 本文的讲述主要是对 http://developer.android.co ...
- Android学习——Fragment与Activity通信(一)
学会了在Activity中加载Fragment的方法之后,接下来便需要学习Activity和Fragment之间的通信.这一节先学习如何把Activity中的信息传递给Fragment. 基本过程 在 ...
- android学习笔记28——Activity生命周期
Activity生命周期 Activity的活动状态由android已Activity栈的形式管理,当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都有可能从活动状态转入非 ...
- android学习笔记27——Activity
Activity配置==> android应用程序要求所有的应用程序组件都需要进行显示配置后,才可正常使用.包括:Activity.Service.BroadCastReceiver.Conte ...
随机推荐
- 脱离SVN的控制
在桌面创建一个记事本文件,然后吧这句话复制进去for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn ...
- mysql mapper中增删查改
//1.增 public int insert(Port port) ; //2.删 public int deleteM(String id);//3.改 public int update(Por ...
- socket接口详解
1. socket概述 socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在Unix一切 ...
- 如何修改jenkins的启动用户?
如何修改运行jenkins进程的linux帐号? 1.找的jenkins的配置文件,一般是/etc/sysconfig/jenkins 2.修改下面的参数为相应的用户,比如JENKINS_USER=& ...
- discuz回贴通知插件实现-获取邮件内容
//自定义钩子函数,命名:模块_函数名_output()或模块_函数名() //一个是模块执行完,模板输出前执行.一个是模块执行前 //post_reply_output函数会在所有post操作中都会 ...
- LayDate 时间选择插件的使用介绍 (低版本1.0好像是)
<span style="font-size:18px;"><!doctype html> <html> <head> <me ...
- oracle的分析函数over(Partition by...) 及开窗函数
over(Partition by...) 一个超级牛皮的ORACLE特有函数. oracle的分析函数over 及开窗函数一:分析函数overOracle从8.1.6开始提供分析函数,分析函 ...
- 操作系统——MiniDos
#include <stdio.h> #include <string.h> #include <windows.h> ],token[],ch,sa[]; ]={ ...
- 在winform嵌入外部应用程序
应朋友要求,需要将一个第三方应用程序嵌入到本程序WinForm窗口,以前在VB6时代做过类似的功能,其原理就是利用Windows API中FindWindow函数找到第三方应用程序句柄,再利用SetP ...
- [远程] windows 2008 server设置了共享文件夹,并且共享给了everyone,但是还是无法访问,怎么解决呢?
还需要设置另外一个地方,将用户加到MSAppAccess这个组里去