这是我参与「第四届青训营 」笔记创作活动的第3天,我来讲一下Activity的基础知识
Activity 4 种生命周期状态如下:
- Active 运行状态
- Pause 暂停状态
- Stop 停止状态
- Killed 消亡状态
Activity 必须在AndroidMainfest.xml注册
-
Activity是四大组件之一,Android规定四大组件必须在AndroidMainfest.xml中注册,Activity如果不注册,则会引起App Crash报错。 -
报错主要异常信息如下:
ActivityFoundExceotion例如以下报错消息:
//提示未在 AndroidMainfest.xml 中找到Activity类的声明
android.content.ActivityNotFoundException:Unable to find explicit activity class
//具体类名,包名如下:
{com.wj.utils/com.wj.utils.basewidget.BaseButtonMethods};
//需要在AndroidManifest 中声明
have you declared this activity in your AndroidManifest.xml?
常用Action标签
-
android.action.MAIN: 表示是当前App的入口main方法类。 -
android.intent.category.LAUNCHER: 表示 此Action会被Launcher扫描到,可以显示在Launcher的Icon列表上,如果去掉此Action,则无法在Launcher种查看到此app的Ico
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
启动Activity 的方法
- 显示启动
- 隐式启动
Toast
- Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间.我们尝试让图中的这个按钮的点击事件作为弹出Toast的出发点
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) setContentView(R.layout.first_layout)
val button1: Button = findViewById(R.id.button1)
button1.setOnClickListener { Toast.makeText(this, "You clicked Button 1",
Toast.LENGTH_SHORT).show() } }
- 在Activity中,可以通过findViewById()方法获取在布局文件中定义的元素,这里我们传入 R.id.button1来得到按钮的实例,这个值是刚才在first_layout.xml中通过android:id属 性指定的。
- findViewById()方法返回的是一个继承自View的泛型对象,因此Kotlin无法自动 推导出它是一个Button还是其他控件,所以我们需要将button1变量显式地声明成Button类 型。得到按钮的实例之后,我们通过调用setOnClickListener()方法为按钮注册一个监听 器,点击按钮时就会执行监听器中的onClick()方法。因此,弹出Toast的功能当然是要在 onClick()方法中编写了。
- Toast的用法非常简单,通过静态方法makeText()创建出一个Toast对象,然后调用show() 将Toast显示出来就可以了。这里需要注意的是,makeText()方法需要传入3个参数。第一个 参数是Context,也就是Toast要求的上下文,由于Activity本身就是一个Context对象,因此 这里直接传入this即可。第二个参数是Toast显示的文本内容。第三个参数是Toast显示的时 长,有两个内置常量可以选择:Toast.LENGTH_SHORT和Toast.LENGTH_LONG。
在ACtivity中使用Menu 首先我们新建一个menu文件夹并在这个文件夹下新建一个名叫'main'的菜单文件,在main.xml下添加如下代码:
- 这里我们创建了两个菜单项,其中标签用来创建具体的某一个菜单项,然后通过 android:id给这个菜单项指定一个唯一的标识符,通过android:title给这个菜单项指定一个名称。
- 接着我们重写了onCreateOptionMenu方法
- 在FirstActivity中重写onOptionsItemSelected()方法,在onOptionsItemSelected()方法中,我们通过调用item.itemId来判断点击的是哪一个 菜单项。
销毁一个Activity
- Activity类提供了一个 finish()方法,我们只需要调用一下这个方法就可以销毁当前的Activity了。 修改按钮监听器中的代码,如下所示: ```
button1.setOnClickListener {
finish()
}
- 重新运行程序,这时点击一下按钮,当前的Activity就被成功销毁了,效果和按下Back键是一样的