ตอนที่ 6 Android Studio Kotlin activities และ intents คืออะไร

Android Studio Kotlin เป็นภาษาการรับทำแอพที่หลากหลายและมีประสิทธิภาพซึ่งได้รับความนิยมสำหรับการทำแอพ Android มันมีคุณสมบัติมากมายที่จะทำให้กระบวนการทำแอพของคุณมีประสิทธิภาพและสนุกสนาน ท่ามกลางฟีเจอร์มากมาย การสนับสนุนกิจกรรมและความตั้งใจของ Kotlin ทำให้เป็นตัวเลือกยอดนิยมสำหรับการทำแอพในบทความนี้ เราจะสำรวจกิจกรรมและความตั้งใจใน Kotlin และวิธีใช้เพื่อรับทำแอพพลิเคชัน Android Studio แบบโต้ตอบและมีส่วนร่วม

1. กิจกรรม (Activity) คืออะไร

กิจกรรม (Activity) ใน Android เป็นงานเดียวที่มุ่งเน้นที่ผู้ใช้สามารถทำได้ แต่ละกิจกรรมเป็นหน่วยการสร้างที่สำคัญของแอพ Android Studio และสามารถดูเป็นหน้าจอเดียวด้วยอินเทอร์เฟซผู้ใช้ (UI) กิจกรรมต่างๆ ถูกสร้างขึ้น เริ่มต้น และจัดการโดยใช้คลาสกิจกรรม (Activity class) ซึ่งเป็นองค์ประกอบสำคัญของเฟรมเวิร์กแอพ Android Studio

1.1 วงจรชีวิต (Lifecycle) ของกิจกรรม (Activity)

ทุกกิจกรรม (Activity) ในการทำแอพ Android จะต้องผ่านสถานะต่างๆ ที่เรียกว่าวงจรชีวิตกิจกรรม (Lifecycle of Activity) การทำความเข้าใจวงจรชีวิตเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าแอปของคุณทำงานได้อย่างถูกต้อง วิธีการวงจรชีวิตที่สำคัญ ได้แก่ :

  • onCreate(): เรียกใช้เมื่อมีการสร้างกิจกรรมครั้งแรก
  • onStart(): เรียกใช้เมื่อกิจกรรมปรากฏแก่ผู้ใช้
  • onResume(): เรียกใช้เมื่อกิจกรรมเริ่มโต้ตอบกับผู้ใช้
  • onPause(): เรียกใช้เมื่อกิจกรรมถูกบดบังบางส่วนโดยกิจกรรมอื่น
  • onStop(): ถูกเรียกเมื่อกิจกรรมไม่ปรากฏแก่ผู้ใช้อีกต่อไป
  • onDestroy(): ถูกเรียกก่อนที่กิจกรรมจะถูกทำลาย

2. ทำความเข้าใจกับเจตนา (Intents)

Intent เป็นออบเจ็กต์การส่งข้อความที่ใช้เพื่อขอการดำเนินการจากคอมโพเนนต์อื่น (เช่น กิจกรรม) ภายในแอปพลิเคชันของคุณหรือแอปพลิเคชันอื่น Intents อำนวยความสะดวกในการสื่อสารระหว่างกิจกรรมและอนุญาตให้คุณเปลี่ยนจากกิจกรรมหนึ่งไปยังอีกกิจกรรมหนึ่ง

ความตั้งใจ (Intents) มีสองประเภท:

  • เจตนาชัดเจน (Explicit Intents): ระบุองค์ประกอบเป้าหมาย (กิจกรรม) ที่ควรตอบสนองต่อเจตนา
  • เจตนาโดยนัย (Implicit Intents): อย่าระบุองค์ประกอบเฉพาะ แต่กำหนดการกระทำที่จะดำเนินการ ปล่อยให้ระบบ Android พิจารณาองค์ประกอบที่เหมาะสมที่สุดในการจัดการกับเจตนา

3. เชื่อมโยง Activities กับ Intents

ในการเริ่มกิจกรรม (Activities)ใหม่ คุณสามารถสร้างความตั้งใจ (Intents) และส่งต่อไปยังเมธอด startActivity() นี่คือตัวอย่างง่ายๆ ที่แสดงวิธีใช้ Intent เพื่อเริ่มกิจกรรมใหม่ที่เรียกว่า SecondActivity:

val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)

คุณยังสามารถส่งข้อมูลระหว่างกิจกรรมได้โดยแนบ “extras” เข้ากับความตั้งใจ (Intents) ตัวอย่างเช่น หากต้องการส่งข้อความไปยัง SecondActivity:

val intent = Intent(this, SecondActivity::class.java).apply {
    putExtra("EXTRA_MESSAGE", "Hello, SecondActivity!")
}
startActivity(intent)

ใน SecondActivity คุณสามารถดึงข้อมูลจาก Intent ได้ดังนี้:

val message = intent.getStringExtra("EXTRA_MESSAGE")

4. การจัดการผลลัพธ์กิจกรรม (Handling Activity Results)

ในบางกรณี คุณอาจต้องการเริ่มกิจกรรมและคาดหวังผลลัพธ์กลับมา เพื่อให้บรรลุเป้าหมายนี้ คุณสามารถใช้เมธอด startActivityForResult() และแทนที่ (override) เมธอด onActivityResult() เพื่อจัดการผลลัพธ์

ตัวอย่างเช่น สมมติว่าคุณต้องการเริ่ม SecondActivity และคาดหวังผลลัพธ์กลับมา:

val intent = Intent(this, SecondActivity::class.java)
startActivityForResult(intent, REQUEST_CODE)

ใน SecondActivity คุณสามารถตั้งค่าผลลัพธ์ก่อนสิ้นสุดกิจกรรม:

val intent = Intent().apply {
    putExtra("RESULT_MESSAGE", "Hello, FirstActivity!")
}
setResult(RESULT_OK, intent)
finish()

สุดท้าย ใน FirstActivity คุณสามารถจัดการผลลัพธ์ในเมธอด onActivityResult() ได้:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
       data?.let {
          val resultMessage = it.getStringExtra("RESULT_MESSAGE")
          // Handle the result message as needed
       }
    }
}

5. การนำทาง (Navigating) ด้วยเจตนาโดยนัย (Implicit Intents)

Implicit Intents ช่วยให้คุณสามารถมอบหมายการดำเนินการไปยังแอปอื่นโดยไม่ต้องระบุองค์ประกอบที่แน่นอนเพื่อจัดการกับคำขอ ตัวอย่างเช่น หากคุณต้องการแบ่งปันข้อความกับแอปอื่นๆ คุณสามารถใช้ Intent Intent กับการกระทำ ACTION_SEND:

val sendIntent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "This is a message to share.")
    type = "text/plain"
}

val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)

ระบบ Android จะแสดงกล่องโต้ตอบตัวเลือกเพื่อให้ผู้ใช้เลือกแอปที่ต้องการใช้เพื่อดำเนินการให้เสร็จสิ้น

กิจกรรม (Activity) และความตั้งใจ (Intent) เป็นแนวคิดพื้นฐานในการทำแอพ Android Studio โดยใช้ Kotlin การทำความเข้าใจวิธีจัดการกิจกรรม (Activity) และวงจรชีวิต (Lifecycle) รวมถึงวิธีนำทางระหว่างกิจกรรมโดยใช้ Intents เป็นสิ่งสำคัญในการทำแอพ Android แบบโต้ตอบและมีส่วนร่วม นอกจากนี้ การเรียนรู้ Intents โดยนัยอย่างเชี่ยวชาญทำให้แอปของคุณสามารถผสานรวมกับแอปพลิเคชันอื่นๆ บนอุปกรณ์ของผู้ใช้ได้อย่างราบรื่น เมื่อคุณสำรวจ Kotlin ของ Android Studio ต่อไป คุณจะค้นพบคุณสมบัติที่ทรงพลังมากขึ้น ซึ่งจะช่วยให้คุณทำแอพ Android Studio ที่มีคุณลักษณะหลากหลายและเป็นมิตรกับผู้ใช้

เขียนแอพ Android Studio

ตอนที่ 5 Android Studio Kotlin ควบคุม input และ event
ตอนที่ 7 Android Studio Kotlin fragments คืออะไร