内容正文:
第5章 深入理解Activity与Fragment
建立、配置和使用Activity
Activity的生命周期和启动模式
Fragment详解
掌握Activity的建立与使用
掌握Fragment的生命周期
掌握Activity的生命周期
掌握Fragment的建立与使用
学 习 目 标
LEARNING OBJECTIVES
初心至善 匠心育人
5.1 菜单
5.1.1
Activity介绍
5.1.2
配置Activity
5.1.3
Activity的启动与关闭
5.1.4
使用Bundle在Activity之间交换数据
目录
Contents
初心至善 匠心育人
5.1 建立、配置和使用Activity
5.1.1 Activity介绍
学习一个新知识点时,总要追根溯源才能彻底掌握。学习Activity也不例外,Activity直接或间接继承了Context、ContextWrapper、ContextThemeWrapper等基类,如图所示。
初心至善 匠心育人
5.1.1 Activity介绍
在使用Activity时,需要开发者继承Activity基类。在不同的应用场景下,可以选择继承Activity的子类。例如界面中只包括列表,则可以继承ListActivity;若界面需要实现标签页效果,则要继承TabActivity。
当一个Activity类被定义之后,这个Activity类何时被实例化,它所包含的方法何时被调用,都是由Android系统决定的。开发者只负责实现相应的方法创建出需要的Activity即可。
创建一个Activity需要实现一个或多个方法,其中最基本的方法是onCreate(Bundle status)方法,它将会在Activity被创建时回调,然后通过setContentView(View view)方法显示要展示的布局文件。这在第1章介绍HelloWorld项目时就提到过。
5.1 建立、配置和使用Activity
初心至善 匠心育人
5.1.2 配置Activity
5.1.1节提到Activity必须在AndroidManifest.xml清单文件中配置才可以使用,而在Android Studio中是自动配置完成,但是有时自动配置完成的属性并不能满足需求。配置Activity时常用的属性如表所示。
除了上面几个属性之外,Activity中还可以设置一个或多个<intent-filter…/>元素,该元素用于指定该Activity可响应的Intent。
5.1 建立、配置和使用Activity
初心至善 匠心育人
5.1.3 Activity的启动与关闭
在一个Android应用程序中通常会有多个Activity,每个Activity都是可以被其他Activity启动的,但程序只有一个Activity作为入口,即程序启动时只会启动作为入口的Activity,其他Activity会被已经启动的其他Activity启动。
Activity被启动的方式有以下两种:
startActivity(Intent intent):启动其他Activity。
startActivityForResult(Intent intent, int requestCode):以指定的请求码(requestCode)启动新Activity,并且原来的Activity会获取新启动的Activity返回的结果(需重写onActivityResult(…)方法)。
5.1 建立、配置和使用Activity
初心至善 匠心育人
5.1.3 Activity的启动与关闭
启动Activity有两种方式,关闭Activity也有两种方式:
finish():关闭当前Activity。
finishActivity(int requestCode):结束以startActivityForResult(Intent intent, int requestCode)方法启动的Activity。
要注意的是显式启动时用setClassName(String packageName, String className)方法,第一个参数是包名,第二个参数是类的全路径名。隐式启动的方式之前没有例子涉及到,它需要在清单文件中对应的Activity中设置action标签,并且与代码中的setAction()中设置的内容一样。
5.1 建立、配置和使用Activity
初心至善 匠心育人
5.1.3 Activity的启动与关闭
其实隐式启动时Android系统会根据清单文件中设置的action、category、uri找到最合适的组件,只不过本例中设置category为"android.intent.category.DEFAULT