DAY21 这边先帮你上一个按钮喔~(三)

今天就直接开始介绍 Activity 吧!

Activity 介绍

每一个应用程序一定都会有一个或是多个 Activity,像是我们前几天做的生日贺卡练习,里面就包含用来显示贺卡的 main activity。跟这次的骰子也是有 main activity 来显示骰之後的结果。

一个 Activity 至少有一个画面配置档( .xml )跟一个控制的程序档( .kt ),在画面配置档中加入 layout 与视窗元件,藉由程序档设定所要呈现的画面设定,并对各元件进行监听或控制,使元件与使用者互动起来。

有些比较复杂的 App 就会需要多个 Activity 来协作完成,例如下图:

https://ithelp.ithome.com.tw/upload/images/20211006/20140638rJWysSpl1U.png

一个相簿的 App 可能就会需要一个 GalleryActivity 来放置相片,一个 ViewerActivity 来浏览照片,跟一个编辑用的 EditorActivity,每个 Activity 都有它主要的功能。


MainActivity

我们要把按钮背後程序逻辑放进 Activity 里,先打开 MainActivity.kt(app > java > com.example.diceroller > MainActivity.kt),打开後你应该会看到下面这样:

package com.example.diceroller

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

?????这些是甚麽意思?????

我也不太清楚。但是先不需要全部了解程序的用意。

仔细一看发现,MainActicity 至少还有个熟悉的 Class 关键字, 然後发现,欸!?不是每个程序都要有 Main 函式?因为 Android 的工作方式比较不一样,第一次打开 App 时,系统会自动调用 MainActivity 的 onCreate( ) 方法,而不是 main( ) 。

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

onCreate( ) 会从 import 去设置 MainActivity ,setContentView 会设置整个 Layout。

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

Android 提供了许多 class 框架,帮助你更轻松的编写 App ,利用 import 指定要使用的框架。像是 button class 是在 android.widget.Button 中。

启用自动导入

开启自动导入来让你更方便的编写程序:

  • File > Other Settings > Setting New Project...

https://ithelp.ithome.com.tw/upload/images/20211006/20140638HrKC0HU718.png

  • Other Settings > Auto Import 。在Java 和 Kotlin 的选项中,勾选 Add unambiguous import on the fly 与 optimize on the fly 这两个选项。再按下 OK 设定完成

https://ithelp.ithome.com.tw/upload/images/20211006/20140638wUxGng6KVE.png

Activity 的介绍与 Import 的设定就先到这边,明天应该就是 Button 与程序关联起来,明明只是个 Button 却牵扯到这麽多东西。今天先 john 。

下一篇见写写打家打家摆掰。


<<:  Day 21 - Shioaji Docker 环境介绍

>>:  [Day 21] 资料关联

Day15 Lua 的全域环境变数 _G 与 _ENV

上一回在研究 rom/programs/monitor.lua 的过程中 看到一些大写的变数 _G,...

Day 27 - Rancher Fleet Kustomize 应用程序部署

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...

自己在家接收来自飞机的ADS-B讯号!

想看飞机又不想透过 FlightRadar24 !? 那就自己架一个接收站吧 ! 一、认识 ADS-...

电子发现参考模型(Electronic Discovery Reference Model)

-电子发现参考模型 证人(Witnesses )和证据(evidence)决定了司法结果。及时的电...

Vue 2.X+ Router + Cli + VueX ( 六角课程笔记 )

1. 双向绑定 v-model 小技巧:不会让使用者点选到第一个option 2.渲染 v-for、...