บทเรียนนี้เราจะพัฒนาแอพพลิเคชัน Android ด้วยภาษา Kotlin ซึ่งถือว่าเป็นภาษาใหม่ ตัวอย่างแรกคือการทำงานร่วมกับ EditText
ให้เราสร้าง New Project ขึ้นมาเพียงแค่ตอนสร้าง Project เราจำเป็นต้องเลือกภาษาเป็น Include Kotlin support
หลังจากนั้นก็สร้าง Empty Activity ปกติ เพียงแค่ Class แรกที่เราจะทำงานคือ MainActivity.kt นั่นเอง ต่อมาให้เราออกแบบหน้าจอ Layout ของเราที่ไฟล์ activity_main.xml ใหม่ดังนี้:
นี่คือไฟล์ activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Main2Activity"> <LinearLayout android:orientation="horizontal" android:layout_width="0dp" android:layout_height="120dp" android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp" android:id="@+id/linearLayout"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:id="@+id/editText2" android:layout_weight="1" android:hint="Name"/> <TextView android:text="Please Fill" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView2" android:layout_weight="1"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="0dp" android:layout_height="120dp" android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/linearLayout" app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp" android:id="@+id/linearLayout2"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textEmailAddress" android:ems="10" android:id="@+id/editText3" android:layout_weight="1" android:hint="Email Address"/> <TextView android:text="Pease Fill" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView3" android:layout_weight="1"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="0dp" android:layout_height="120dp" app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp" android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/linearLayout2" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp" android:id="@+id/linearLayout3"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="phone" android:ems="10" android:id="@+id/editText4" android:layout_weight="1" android:hint="Phone"/> <TextView android:text="Please Fill" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView4" android:layout_weight="1"/> </LinearLayout> <Button android:text="SUBMIT" android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/button" app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp" app:layout_constraintTop_toBottomOf="@+id/linearLayout3" android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintVertical_bias="0.776"/> </android.support.constraint.ConstraintLayout>
กลับมาที่ MainActivity.kt ให้เราประกาศ Global Variable ดังนี้:
var editName: EditText? = null var editEmail: EditText? = null var editPhone: EditText? = null var button: Button? = null
ไปที่ onCreate() เพิ่มการประกาศตัวแปรเข้ากับ widget ดังนี้:
editName = findViewById(R.id.editText2) as EditText editEmail = findViewById(R.id.editText3) as EditText editPhone = findViewById(R.id.editText4) as EditText button = findViewById(R.id.button) as Button
เพิ่ม Activity ใหม่เป็น Empty Activity ชื่อว่า InformationActivity ขึ้นมาโดยคลิกที่ app->New->Activity->Empty Activity
กลับมาที่หน้า MainActivity.kt เพิ่มคำสั่ง setOnClickListener() ให้กับ Button ดังนี้:
button!!.setOnClickListener { var intent = Intent(this, InformationActivity::class.java) intent.putExtra("NAME",""+ editName!!.getText().toString()) intent.putExtra("EMAIL",""+ editEmail!!.getText().toString()) intent.putExtra("PHONE",""+ editPhone!!.getText().toString()) startActivity(intent) }
โดยเราจะรับค่าจาก EditText ไปเก็บใน Parameter ชื่อ Name สำหรับส่งค่าผ่าน Intent ไปยังหน้าปลายทางคือ InformationActivity
var intent = Intent(this, InformationActivity::class.java)
ส่วนหน้า InformationActivity.kt ให้เราลาก TextView มาวาง 3 ตัวสำหรับทำ setText ที่รับค่าจาก getIntent() จากหน้า MainActivity ดังนั้นหน้า InformationActivity.kt จะเป็นดังนี้:
import android.content.Intent import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.EditText class InformationActivity : AppCompatActivity() { var information_name: TextView? = null var information_email: TextView? = null var information_phone: TextView? = null var button: Button? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_information) information_name = findViewById(R.id.information_name) as TextView information_email = findViewById(R.id.information_email) as TextView information_phone = findViewById(R.id.information_phone) as TextView var intent = getIntent() information_name!!.setText(""+intent.getStringExtra("NAME")) information_email!!.setText(""+intent.getStringExtra("EMAIL")) information_phone!!.setText(""+intent.getStringExtra("PHONE")) } }
ทดสอบแอพพลิเคชันของเรา