安卓活动(Activity)基本介绍和用法

第一行代码Android

第二章

先从看得到的入手——探究活动

活动是最容易吸引用户的滴地方,它是一种包含用户界面的组件,主要用于和用户进行交互。

 

一、活动的基本用法

1.手动创建活动

创建一个空活动

2.创建和加载布局

创建一个.xml文件

 

这里添加的就是一个Button控件,id是这个元素的唯一的一个标识符,width和heigth是这个元素的宽度和高度,text是这个元素中显示的内容。match_parent表示让当前元素和父元素一样(就是整个手机屏幕),wrap_content表示刚好包裹住元素的内容 

然后再第一步新创建的空活动中加

 调用setContentView(),来给这个空活动加载这个布局,布局中有一个Button控件

3.在AndroidManifes文件中注册

将创建的空活动成为这个程序的主活动

4.在活动中使用Tonst

 这里使用了Button控件,不要担心,这个在后面的UI控件中会详细学到,先通过findViewById()方法获取到布局文件中的定义的元素,传入的R.id.button_1得到Button按钮的实例,在通过setOnClickListener()给按钮注册一个监听器,点击按钮时就会执行onClick()中的方法。

5.在活动中使用Menu

在res文件中创建一个menu的文件,紧接着在menu文件中创建一个Menu resource file文件,文件名输入main。

这里我们创建了两个菜单项目,<item>标签就是用来创建某一个具体的菜单项。然后回到空活动中重写onCreatOptionsMenu()方法 这里只是让菜单显示出来,这肯定不够,所以我们就要给菜单定义两个响应事件(就是点一下菜单会发生什么事情),这里我们重写onOptionsItemSelected()方法

 

 

然后点击运行,你会发现手机右上角多了三个点,没错这就是我刚刚定义的菜单键。

6.销毁一个活动

销毁活动只需要改变一下按钮监听器的代码就可以了 

二、使用Intent在活动之间穿梭

Intent是Android程序中各种组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要指行的动作,还可以在不同的组件之间传递数据。

1.使用显式Intent

Intent有多个构造函数的重载,其中一个是Intent(Context packageContext, Class<?>cls)。这个构造函数接收两个参数,第一个参数是提供启动活动的上下文,第二个参数是Class就是想要启动的目标活动。

这里我们先构建出来了一个Intent传入FirstActivity.this作为上下文,然后传入SecondActivity.class作为目标活动(这里的第二个活动的创建请参考活动的创建) 

2.使用隐式Intent

3.向下一个活动传递数据

在第一个活动中

这里我们还是使用显式的方法启动第二个活动,然后通过putExtra()方法传递了一个字符串。这里的putExtra()方法传递了两个参数,第一个参数是键,用于后面从Intent中取值。第二个参数是真正要传递的数据

 在第二个活动中

 然后我们在第二个活动中将传递的数据取出来,并打印。我们通过使用getIntent()方法获取用于启

动第二个活动的Intent,然后调用getStringExtra()方法,传入响应的键值,就可以得到我们传入的数据了。

这里我们传递的是一个字符串用的是getStringExtra(),如果我们传递的是一个整型数据,就用getIntExtra(),如果我们传递的是一个布尔类型的数据,就用getBooleanExtra()。

4.返回数据给上一个活动

startActivityFooResult()方法也可以用来启动活动,但是这个方法期望在活动销毁的时候能够返回一个结果给上一个活动

第一个活动中,修改第一个活动的按钮点击事件

startActivityFooResult()有两参数,第一个还是Intent,第二个是一个请求码,用于在之后的会回调中判断数据的来源。

 第二个活动中,可以看到我们在第二个方法中也定义了一个Intent,只不过这个Intent没有任何指定的意图,仅仅是用它来传递数据。此时第二个活动中的按钮表示,销毁第二个活动。

 

第一个活动中

 因为我们在第一个活动中 使用的是startActivityFooResult()来启动的第二个活动,所以在第二个活动销毁之后,会调用第一个活动中的onActivityResult(),所以我们在第一个活动中重写onActivityResult(),来得到第二个活动中返回的数据。

onActivityResult()有三个参数,,第一个参数requestCode,就是我们在启动活动中传入的请求码,第二个参数就是resultCode,就是我们返回数据时传入的处理结果(就是刚刚在第一个活动中传递的数字1),第三个参数就是携带者返回数据的Intent。

第二个活动中,另外一种情况

如果我们没有点击活动二中的按钮来进行销毁活动二,而是通过返回的方式销毁活动二,回到活动一中去,我们就可以添加onBackPressed()方法来解决。

 三、活动的生命周期

1.返回栈

2.活动状态

3.活动的生存期

4.体验活动的生命周期

 四、活动的启动模式

1.standard

每启动一个新的活动,他就会在返回栈中入栈,并处于栈顶的位置

2.singleTop

如果发现返回栈的栈顶就是要启动的活动,就可以直接使用他,不会再创建新的活动实例

3.singleTask

每次启动活动的时候系统首先会在返回栈中检查是否有启动活动的实例,如果发现了已经存在的实例就会直接使用该实例,并把这个活动上面的所有活动全都出栈,如果没有发现创建的实例就会创建一个实例

4.singleInstance

这个模式会启动新的返回栈来管理这个和其他程序一起共用的活动

总结

恭喜你,活动的大部分知识点你已经学完!

参考Android第一行代码(第2版)

猜你喜欢

转载自blog.csdn.net/qq_65337539/article/details/125945984