試做一個簡單的點餐系統,在第一頁輸入訂購人姓名之後,點選按鈕會跳轉到第二頁的品項選擇,並且會在第二頁Text顯示剛輸入的訂購人姓名,點選完後最後會回到第一頁並顯示品項細節。主要練習的功能有RadioButton、Activity切換及夾帶資料等,將會拆成幾篇來講:
使用:EditText、Activity
▲ EditText
我們使用到一種新的Text、可以讓我們自由輸入文字,EditText繼承自TextView,所以很多用法幾乎和它一致,最常用的就是「inputType」性質,可以限定要輸入哪種類型的文字或資料,例如:
android:inputType=”textPersonName” (人名)
android:inputType=”textPassword” (密碼)
android:inputType=”number” (數字)
android:inputType=”phone” (電話鍵盤)
android:inputType=”datetime” (時間日期)
...
在畫面元件搜尋「editText或plainText」就可以取得
▲ Activity
創建應用時會顯示一個主要的 Activity(屏幕),但app通常不會只有一個畫面,可能會有很多個Activity存在,這時候就需要透過「intent」來進行切換的功能。
Intent:
在相互獨立的元件(如兩個 Activity)之間提供運行時綁定功能的物件。Intent表示某個應用“執行某項操作的意圖”。您可以使用 Intent 來執行多種任務,但在這裡,我們 Intent 將用於啟動另一个 Activity
常用語法
startActivity()
startActivityForResult()
onActivityResult()
使用onActivityResult()
如何建立點餐系統
當兩個Activity都有了,來練習最基本的切換頁面,對按鈕設定一個監聽事件,Intent基本寫法就是裡面放要切換的頁面,第一個參數是目前頁面、第二個是指定切換的Activity:Intent(A.this, B::class.java)
--代表在A欲透過Intent開啟B
將設好的intent放入startActivity裡,點擊按鈕後會實現切換
button.setOnClickListener {
val intent = Intent(this, Main2Activity::class.java)
//MainActivity.this可簡寫成this
startActivity(intent)
}
如果不只是單純跳頁,還想要夾帶一些資料呢?
如下圖,在第一頁EditText輸入姓名後,按選擇跳到第二頁時,希望在第二頁TextView的文字中顯示剛剛輸入的姓名,這時候就需要夾帶資料。
當有資料要在activity間傳遞,基本類別的可以直接用intent夾帶,在A.Activity使用putExtra方式加入資料,在B.Activity再以getExtra方式取得資料:
button.setOnClickListener {
val intent = Intent(this, Main2Activity::class.java)
val name = ed_name.text.toString() //將ed_name文字轉成String字串
intent.putExtra("nameKey", name) //putExtra("Key", value)
startActivity(intent)
}
val name = intent.getStringExtra("nameKey")
tv_name.text = "訂購人姓名:$name"
今天就寫到最基本的頁面切換,參考作法:启动另一个 Activity