Activity就相当于我们的手机界面,里面包含着各个组件
- Activity 的4种状态
运行状态:屏幕可视,且可以进行操作
暂停状态:返回退出的时候,询问是否退出运行状态,此时属于暂停状态
---------------------------------------------------------------------------------------------------(运行和暂停状态时可进行对应操作)
停止状态:当点击确认退出该程序时,此时属于停止状态
销毁状态:当在任务管理器中强制停止程序运行,此时属于销毁状态
----------------------------------------------------------------------------------------------------(停止和销毁状态是不可见的)
- Activity的生命周期
-
创建、启动和关闭Activity
但是是不是创建好Activity后就可以直接运行了呢?
直接运行会报错:
错误提示,我们是否在配置文件中已经注册了要运行的Activity
配置AndroidManifest.xml
启动和关闭Activity
即使创建成功后,没有启动的话,在屏幕上也不会显示任何页面
启动分为两种情况
一种是直接找到入口,通过AndroidManifest.xml指定
另外一种是在主界面通过按钮然后指定跳转到某个界面,Tntent最常使用的就是它的跳转Activity和在Activity之间传值的功能
关闭Activity
形参理解为入口参数,返回值理解为出口参数
很简单,只要再Activity中指定点击关闭按钮触发finish()方法就行,就会返回上一个调用它的Activity的界面,否则就回到主屏幕中
实例:
小技巧:怎么刷新当前的Activity呢?
调用onCreate(null)方法啦
使用Bundle在Activity之间交换数据
Intent可以在两个Activity之间承担桥梁,但是桥梁是桥梁,桥梁上面跑的是大货车去运送数据,这个数据就是存放在Bundle中
什么是Bundle,可以把一些数据以键值对的形式保存到Bundle中,读取的时候通过Key找到Value
如何把Bundle保存的数据提交给另外一个Activity
顺序如下:把数据通过Bundle保存,然后调用putExtras()方法给到Intent
示例:
.show();
调用另一个Activity并返回结果
使用的方法不是startActivity(),而是
前面的参数是写指定的想要被启动的界面,后面的参数是一个请求码,用请求码来启动Activity
Fragment的生命周期
是安卓3.0中新增加的概念,中文意思是碎片,和Activity很相似
可以在多个Activity中重用Fragment,也可以使用多个Fragment在一个单独的Activity中建立多个UI面板
相当于单个界面之间来回切换,Fragment是一个更小的概念
一个Fragment必须被嵌入到Activity中,且直接受到所在的Activity的生命周期影响
如何创建Fragment,需要继承自己的父类
还要弄懂一个概念,什么是inflater
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。 具体作用: 1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。
LayoutInflater 是一个抽象类,在文档中如下声明:
publicabstractclass LayoutInflater extends Object
haihuibucon