iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0

今天就直接開始介紹 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 。

下一篇見寫寫打家打家擺掰。


上一篇
DAY20 這邊先幫你上一個按鈕喔~(二)
下一篇
DAY22 這邊先幫你上一個按鈕喔~(四)
系列文
糟了!是世界奇觀!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言