Android onCreate 详解
在AndroidManifest.xml文件中的 intent-filter 元素中有这么两句:
<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>
当写好的应用发布到手机上之后,当双击”抽屉“里该应用的图标时,系统会将这个点击事件包装成一个Intent,该Intent包含两个参数,如上所述的两个参数action, category
被传递给应用之后,在应用的功能清单文件中寻找与该意图匹配的意图过滤器,如果匹配成功,找到相匹配的意图过滤器所在的Activity元素,再根据
activity 元素的”name“属性来寻找其对应的Activity类。接着Android操作系统创建该Activity类的实例对象,对象创建完成之后,会执行到该类的onCreate方法,
此onCreate方法是重写父类Activity的onCreate方法而实现的。onCreate方法用来初始化Activity实例对象。如下是AndroidUIdemo.java类中的onCreate方法的代码:
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.caculator_layout);Log.d(TAG,"debug");Log.i(TAG,"info");Log.w(TAG,"warm");Log.e(TAG,"error");Log.v(TAG,"verbose");//找控件initView();//设置点击事件initClickEvent();}
一、 super.onCreate(savedInstanceState)
其中super.onCreate(savedInstanceState)的作用是调用其父类Activity的onCreate方法来实现对界面的图画绘制工作。
在实现自己定义的Activity子类的onCreate方法时一定要记得调用该方法,以确保能够绘制界面。
super.onCreate主要是加载一些组件。
第一件事情便是super.onCreate(savedInstanceState),其实这条语句放在子类中的onCreate方法中的任何位置都可,问题只是
super.onCreate(savedInstanceState)必须要被执行,所以,最好也就是放在第一行,看起来比较明确。
在TargetActivity中重写了onCreate方法,而在Activity中的onCreate方法中已经对一些基本的基础进行了操作,如果子类没有super.onCraete方法的调用,会导致子类中的onCreate方法功能不全,从而出现错误。
savedInstanceState
在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanceState的作用。
当一个Activity在PAUSE时,被kill之前,它可以调用
onSaveInstanceState()来保存当前activity的状态信息(在paused状态时,要被KILLED的时候)。用来保存状态信息的Bundle会同时传给两个method,即onRestoreInstanceState() and onCreate().
二、setContentView(R.layout.caculator_layout)
作用:加载一个界面。
该方法中传入的参数是”R.layout.caculator_layout“,其含义为R.java类中静态内部类layout的静态常量caculator_layout的值,
而该值是一个指向res目录下的layout子目录下的caculator_layout.xml文件的标识符。因此代表着显示caculator_layout.xml所定义的画面。
三、两种点击事件
/**设置点击事件*/private void initClickEvent(){//第一种设置方式mCancel.setOnClickListener(new View.OnClickListener() {public void onClick(View v){Log.d(TAG, "content=="+((TextView)v).getText() );}});//第二种设置方式mPlusOrMinus.setOnClickListener(this);mPlus.setOnClickListener(this);}@Overridepublic void onClick(View v) {//如果有多个空间设置点击事件,我们这里需要统一处理的话,需要判断是//哪一个控件if(v == mPlusOrMinus){Log.d(TAG, "点击了mPlusOrMinus" + ((TextView)v).getText().toString());}else if(v == mPlus){//同样的方式去判断}//另一种方式及时用switch来判断id//先拿到idint id = v.getId();switch(id){case R.id.tv_number_one://one这个内容被点击了,就在这里处理break;case R.id.tv_equal://处理等号事件break;}}
控件初始化
/**在这里找到控件*/private void initView(){mCancel = (TextView) this.findViewById(R.id.tv_cancel);mPlusOrMinus = (TextView) this.findViewById(R.id.tv_plus_or_minus);mMod = (TextView) this.findViewById(R.id.tv_mod);mDivider = (TextView) this.findViewById(R.id.tv_divider);mOne = (TextView) this.findViewById(R.id.tv_number_one);mTwo = (TextView) this.findViewById(R.id.tv_number_two);mThree = (TextView) this.findViewById(R.id.tv_number_three);mTime = (TextView) this.findViewById(R.id.tv_time);mFour = (TextView) this.findViewById(R.id.tv_number_four);mFive = (TextView) this.findViewById(R.id.tv_number_five);mSix = (TextView) this.findViewById(R.id.tv_number_six);mMinus = (TextView) this.findViewById(R.id.tv_minus);mSeven = (TextView) this.findViewById(R.id.tv_number_seven);mEight = (TextView) this.findViewById(R.id.tv_number_eight);mNine = (TextView) this.findViewById(R.id.tv_number_nine);mPlus = (TextView) this.findViewById(R.id.tv_plus);mZero = (TextView) this.findViewById(R.id.tv_number_zero);}
Android onCreate 详解相关推荐
- 【转】Android菜单详解——理解android中的Menu--不错
原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...
- Android菜单详解——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
- android WebView详解,常见漏洞详解和安全源码(下)
上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http ...
- android子视图无菜单,Android 菜单详解
Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu) 选项菜单 可以通过两种办法增加选项菜单,一是在menu.xml中添加,该 ...
- Android SharedFlow详解
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121911675 本文出自[赵彦军的博客] 文章目录 系列文章 什么是SharedF ...
- android fragment 优势,Android Fragment详解
参考网址:Android Fragment详解 一.什么是Fragment? Fragment:是Android3.0开始新增的概念,意为碎片.Fragment是依赖于Activity的,不能独立存在 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Android NFC详解(高级)
上一章节讲到了 Android NFC的基本应用(Android NFC详解),这章延伸一下,介绍各种高级 NFC 应用,例如如何使用各种标签技术.如何写入 NFC 标签以及如何执行前台调度(借助前台 ...
- Android UI详解之布局管理器(一)
Android UI详解之布局管理器 一.布局管理器 ①顶级父类View ②子类GroupView ③AbsoluteLayout.FrameLayout.LinearLayout.GridLayou ...
最新文章
- ONNX 浅析:如何加速深度学习算法工程化?
- 基于WINCE6.0+S3C2443的camera驱动
- 15合并两个排序的链表
- php csv 简单的导入
- Seeed Raspberry Pi广角摄像/相机模块 支持Pi所有版本 OV5647
- 天津政府应急系统之GIS一张图(arcgis api for flex)解说(二)鹰眼模块
- 【原创中】儿子,听爸爸跟你说
- Codeforces 408D Long Path (DP)
- 活动安排问题(51Nod-1428)
- Python 如何从字符串中提取 URL 链接
- mapper.xml 的配置
- maven下载及安装教程(保姆及教程)
- 树状笔记软件for linux,WikidPad:wiki风格的开源树状笔记管理软件(新增发布内容为html)...
- 只有一条线的生存分析图 复杂一点的生存分析 及其参数详细解释
- Accessing non existent property lineno of module
- java代理模式学习笔记
- Typecho炫彩鼠标插件:HoerMouse
- xms java_java xms xmx xmn xss解释
- excel 导入文本数据乱码问题
- 刚刚,京东推出“小京鱼”平台和五款智能新品,全面押注IoT