Activity基础知识|青训营笔记

156 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第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扫描到,可以显示在LauncherIcon列表上,如果去掉此Action,则无法在Launcher种查看到此appIco

<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下添加如下代码:

image.png

  • 这里我们创建了两个菜单项,其中标签用来创建具体的某一个菜单项,然后通过 android:id给这个菜单项指定一个唯一的标识符,通过android:title给这个菜单项指定一个名称。
  • 接着我们重写了onCreateOptionMenu方法
  • image.png
  • 在FirstActivity中重写onOptionsItemSelected()方法,在onOptionsItemSelected()方法中,我们通过调用item.itemId来判断点击的是哪一个 菜单项。

image.png 销毁一个Activity

  • Activity类提供了一个 finish()方法,我们只需要调用一下这个方法就可以销毁当前的Activity了。 修改按钮监听器中的代码,如下所示: ```
button1.setOnClickListener {
finish()
} 
  • 重新运行程序,这时点击一下按钮,当前的Activity就被成功销毁了,效果和按下Back键是一样的