Kotlin Android 高效入門
線上課程
  • Kotlin Android 高效入門
  • Android 開發準備
    • 0 Git 版本控制系統
      • 0.1 Gitlab 網站
      • 0.2 Gitlab 範例專案
      • 0.3 Gitlab 取得本書範例
      • 0.4 版本切換
    • 1 Android 系統與應用程式
      • 1.1 Android 版本演進
      • 1.2 Android 系統架構
      • 1.3 應用程式基礎
      • 1.4 應用程式元件
      • 1.5 應用程式宣告檔
      • 1.6 Android Studio 開發環境
    • 2 開發環境安裝
      • 2.1 基礎環境-JDK
      • 2.2 整合開發工具-Android Studio
      • 2.3 必要的設定
  • Android 專案開發
    • 3 Android 專案架構與 Activity
      • 3.1 建立Bmi專案
      • 3.2 AndroidManifest.xml載運清單
      • 3.3 畫面配置-Layout
      • 3.4 Java/Kotlin 類別
      • 3.5 資源 Resources
      • 3.6 Android Support Library-支援函式庫
    • 4 版面配置環境
      • 4.1 版面配置設計畫面
      • 4.2 ConstraintLayout 版面配置
      • 4.3 LinearLayout 流水式版面
      • 4.4 元件的高度與寬度
      • 4.5 元件位置與距離
    • 5 Kotlin 語言基礎
      • 5.1 Kotlin 基礎知識
      • 5.2 類別與物件
    • 6 Activity 設計
      • 6.1 Bmi 專案功能設計
      • 6.2 MainActivity 中取得畫面元件
      • 6.3 按鈕的事件處理
      • 6.4 使用浮動顯示-Toast類別
      • 6.5 使用對話框-AlertDialog 類別
      • 6.6 多國語言
      • 6.7 按鈕事件處理-匿名類別與 lambda
  • 線上課程
    • 20 線上課程 courses
Powered by GitBook
On this page
  • 區域變數提昇為屬性
  • 抽取程式碼成為方法

Was this helpful?

  1. Android 專案開發
  2. 6 Activity 設計

6.2 MainActivity 中取得畫面元件

Previous6.1 Bmi 專案功能設計Next6.3 按鈕的事件處理

Last updated 5 years ago

Was this helpful?

開啟 MainActivity.kt,在 onCreate 方法中的 setContentView 語法的下一行,新增以下程式碼:

val edWeight = findViewById<EditText>(R.id.ed_weight)
val edHeight = findViewById<EditText>(R.id.ed_height)
val bHelp = findViewById<Button>(R.id.b_help)

上述程式碼呼叫了 MainActivity 的父類別 Activity 提供的 findViewById 方法,可利用先前在畫面上為元件設定的 id 值,取得元件,回傳的型態為 View,原本都得再經過轉型後得到元件原本型態(多型應用),但從 Android Studio 3 開始,工具會自動轉換型態,不需加上轉型語法了。畫面上的 Help 按鈕,也使用同樣方法取得 bHelp 物件。

在輸入類別名稱時,第一個字母請大寫,例如欲輸入 EditText 時,只需輸入部份如「Edi」,此時自動完成的下拉選單會出現符合的類別名稱,請以上下鍵選擇「EditText (android.widget)」按下 Enter 鍵,這樣才會自動加入 import 語法,如下圖:

區域變數提昇為屬性

可是,上述的「edWeight」、「edHeight」與「bHelp」三個物件都是 在 onCreate 方法中宣告的區域變數,在 onCreate 方法外是無法被存取的, 應該將這三個變數提昇為類別的屬性 (Property),也就是放在 MainActivity 內的第一層中。可以利用 Kotlin 語言的 lateinit 語法可定義一個在之後才會初始化的屬性,在第一層中定義屬性 (Property),之後在 onCreate 方法中再取得元件,如下圖:

抽取程式碼成為方法

當需從一個畫面中取得很多個元件時,這些在 onCreate 方法中的程式碼會略顯雜亂,可設計一個方法,再將這些取得元件的程式碼移到方法中。通常我們會將方法命名為「findViews」,Android Studio 提供快速鍵可將程式碼抽出成為方法,請先選取想要抽出的程式碼,如本例在 onCreate 方法中的三個 findViewById 語法,如下圖:

再按下 Extract Method 抽取程式碼的快速鍵「Ctrl + Alt + M」(Mac 為「Option + Command + M」), 出現對話框後,再輸入方法的名稱「findViews」,如下圖:

最後按下 Enter 鍵,程式碼很快就完成原本繁複的工作,如下: