Android Academy · บทเรียน

อินเทนต์และการนำทาง

นำทางระหว่าง Activity ด้วยอินเทนต์แบบระบุชัดเจน ส่งข้อมูลด้วย putExtra/getExtra และเปิดแอปภายนอกด้วยอินเทนต์แบบไม่ระบุปลายทาง

บทเรียน 5 จาก 711 ขั้นตอน

อินเทนต์และการนำทาง เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 5 จากทั้งหมด 7 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 7 บทเรียน

Intent คืออะไร

Intent คือข้อความที่บอกให้ Android ทำบางสิ่ง:

  • Explicit Intent — เปิด Activity ที่ระบุในแอปของคุณ
  • Implicit Intent — ขอให้ Android ค้นหาแอปที่จัดการการกระทำนั้นได้ เช่น เปิด URL โทรออก หรือแชร์ข้อความ

Intent เป็นวิธีหลักที่ Activity ใช้สื่อสารระหว่างกัน

Explicit Intent: เปิดหน้าจอ

เปิด Activity อื่นในแอปของคุณ:

// In your button click listener:
binding.btnGoToDetail.setOnClickListener {
    val intent = Intent(this, DetailActivity::class.java)
    startActivity(intent)
}

// To also close the current screen after navigating:
binding.btnLogin.setOnClickListener {
    val intent = Intent(this, HomeActivity::class.java)
    startActivity(intent)
    finish() // removes LoginActivity from back stack
}

การส่งข้อมูลด้วย Extras

ใช้ extras เพื่อส่งข้อมูลไปยัง Activity ถัดไป:

  • intent.putExtra("key", value) — แนบข้อมูล
  • intent.getStringExtra("key") — เรียกคืน String
  • intent.getIntExtra("key", defaultValue) — เรียกคืน Int

ใช้ค่าคงที่สำหรับคีย์เพื่อหลีกเลี่ยงการพิมพ์ผิด

การส่งและรับ Extras

ส่งข้อมูลจาก Activity หนึ่ง แล้วอ่านข้อมูลนั้นใน Activity ถัดไป:

// Sending Activity:
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("PRODUCT_ID", 42)
intent.putExtra("PRODUCT_NAME", "Laptop")
startActivity(intent)

// DetailActivity — receiving:
class DetailActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_detail)

        val id = intent.getIntExtra("PRODUCT_ID", -1)
        val name = intent.getStringExtra("PRODUCT_NAME") ?: ""
        // Use id and name to load data
    }
}

Implicit Intent

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

  • เปิด URL บนเว็บในเบราว์เซอร์
  • โทรออกไปยังหมายเลขโทรศัพท์
  • ส่งอีเมล
  • แชร์ข้อความไปยังแอปใดก็ได้

Android จะแสดงตัวเลือกแอปหากมีหลายแอปที่จัดการ Intent นี้ได้

Implicit Intent ที่ใช้บ่อย

เปิดการกระทำของระบบด้วย Implicit Intent:

import android.content.Intent
import android.net.Uri

// Open a web page
val webIntent = Intent(Intent.ACTION_VIEW,
    Uri.parse("https://developer.android.com"))
startActivity(webIntent)

// Dial a phone number
val dialIntent = Intent(Intent.ACTION_DIAL,
    Uri.parse("tel:+15551234567"))
startActivity(dialIntent)

// Share text
val shareIntent = Intent(Intent.ACTION_SEND).apply {
    type = "text/plain"
    putExtra(Intent.EXTRA_TEXT, "Check out this app!")
}
startActivity(Intent.createChooser(shareIntent, "Share via"))

การรับผลลัพธ์กลับมา

เมื่อต้องการผลลัพธ์จากหน้าจออื่น เช่น ตัวเลือกรูปภาพหรือแบบฟอร์ม ให้ใช้ Activity Result API:

  • ลงทะเบียนตัวเปิดด้วย registerForActivityResult
  • เปิดใช้งานเมื่อจำเป็น
  • จัดการผลลัพธ์ใน callback

วิธีนี้มาแทนรูปแบบเดิมที่ใช้ startActivityForResult / onActivityResult

ตัวอย่าง Result API

ขอรูปภาพจากแกลเลอรีและรับรูปภาพกลับมา:

import androidx.activity.result.contract.ActivityResultContracts

class MainActivity : AppCompatActivity() {

    private val pickImage = registerForActivityResult(
        ActivityResultContracts.GetContent()
    ) { uri ->
        // 'uri' is the selected image URI, or null if cancelled
        if (uri != null) {
            binding.ivPhoto.setImageURI(uri)
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...
        binding.btnPickPhoto.setOnClickListener {
            pickImage.launch("image/*")
        }
    }
}

Deep Link

deep link คือ URL ที่เปิดหน้าจอเฉพาะในแอปของคุณโดยตรง เหมาะสำหรับการแจ้งเตือนแบบพุชและลิงก์ทางการตลาด

ประกาศ deep link ใน AndroidManifest.xml โดยใช้ intent-filter พร้อมแท็ก data ที่ระบุรูปแบบ URL และโฮสต์

ตรวจสอบความเข้าใจ

ควรใช้ Intent ประเภทใดเพื่อเปิดเว็บไซต์ในเบราว์เซอร์ของผู้ใช้

สรุป: Intent และการนำทาง

ขณะนี้คุณสามารถนำทางระหว่างหน้าจอและเปิดใช้ความสามารถของระบบได้แล้ว:

  • Explicit Intent — เปิด Activity ที่ระบุในแอปของคุณ
  • putExtra / getExtra — ส่งข้อมูลระหว่าง Activity
  • Implicit Intent — เปิด URL โทรออก หรือแชร์เนื้อหา
  • Activity Result API — รับข้อมูลกลับจาก Activity อื่น

ถัดไป: แสดงรายการแบบไดนามิกด้วย RecyclerView

เริ่มต้นได้ฟรี

เรียนรู้ Kotlin ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
36
บทเรียน
152

คำถามที่พบบ่อย

บทเรียน “อินเทนต์และการนำทาง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “อินเทนต์และการนำทาง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 7 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “อินเทนต์และการนำทาง”

นำทางระหว่าง Activity ด้วยอินเทนต์แบบระบุชัดเจน ส่งข้อมูลด้วย putExtra/getExtra และเปิดแอปภายนอกด้วยอินเทนต์แบบไม่ระบุปลายทาง คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 5 จากทั้งหมด 7 บทเรียน

บทเรียน “อินเทนต์และการนำทาง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม

ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โครงสร้างโครงการและไฟล์ Manifest
  2. Activity และวงจรชีวิต
  3. เค้าโครงและมุมมอง
  4. การจัดการข้อมูลที่ผู้ใช้ป้อน
  5. อินเทนต์และการนำทาง
  6. Fragment
  7. สิทธิ์และคำขอขณะทำงาน
← กลับไปที่ Android Academy