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 ...
随机推荐
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 代码分层
视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器.路由中间件.Get 和 Post 形式的请 ...
- JS 实现Json查询的方法实例
其实很简单,我这部分代码,前一部分是简单的实现如何使用JS写模板,第二个就是具体的实现了JSON查询的一个扩展. 以后查询Json就有了利器了. 代码如下: /* * 定义模板函数 ...
- Invoke,BeginInvoke的作用
这两个方法主要是让给出的方法在控件创建的线程上执行 凡是使用BeginInvoke和Invoke调用的线程都是在UI主线程中执行的
- 大型运输行业实战_day04_2_高级查询
1.高级查询最总效果 2.高级查询步骤 2.1页面输入框显示 开始车站:<input id="startStation" type="text" valu ...
- 如何设置maven的local repository目录
step1:默认会放在~/.m2/repository目录下 (“~”代表用户的目录,比如windows下一般都是C:\Documents and Settings\[你的用户名]\.由于“Docum ...
- C#语法基础
泛型 1.default(T)可以返回T类型的空值,因为你不知道T是值类型还是引用类型,所以别擅自用null 2.泛型约束 很多时候我们不希望使用者太过自由 我们希望他们在使用我们设计的泛型类型时 不 ...
- X_PU
通俗易懂告诉你CPU/GPU/TPU/NPU...XPU都是些什么鬼?[附把妹秘籍] 2017-10-27 19:54移动芯片/谷歌 作者:iot101君 物联网智库 原创 转载请注明来源和出处 现在 ...
- PS切图导出代码后出现的图片布局散乱的解决方法——table布局
前言: 一般来说,大部分美工PS切图后导出的都是使用PS默认的table布局的页面,出现最多的异常是上传代码,替换图片后,发现图片布局散乱,完全不是想要的效果.轻微的是浏览器不兼容,只有部分浏览器可以 ...
- collections之命名元组
#python中没有为我们提供可命名的tuple的类,这个类需要我们自己来定义,下面我们就自己来定义一个类,然后namedtuple就是可以通过名称来get#tuple中的元素,python中的tup ...
- Binary Tree Traversal 二叉树的前中后序遍历
[抄题]:二叉树前序遍历 [思维问题]: 不会递归.三要素:下定义.拆分问题(eg root-root.left).终止条件 [一句话思路]: 节点非空时往左移,否则新取一个点 再往右移. [输入量] ...