0Pricing
Android Academy · บทเรียน

การส่งอาร์กิวเมนต์

ส่งข้อมูลไปยังปลายทาง

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

ส่งข้อมูลระหว่างหน้าจอ

บ่อยครั้งปลายทางจำเป็นต้องใช้ข้อมูล เช่น รหัสของรายการที่ต้องการแสดง ใน Navigation Compose คุณสามารถเข้ารหัสอาร์กิวเมนต์ไว้ใน เส้นทาง ได้โดยตรง เช่นเดียวกับ URL

เส้นทางที่มีตัวยึดตำแหน่ง

ประกาศตัวยึดตำแหน่งในเส้นทางโดยใช้วงเล็บปีกกา ในที่นี้ {id} คืออาร์กิวเมนต์ที่ชื่อ id

composable("details/{id}") { backStackEntry ->
    // read id here
}

ประกาศชนิดของอาร์กิวเมนต์

แจ้งชนิดของอาร์กิวเมนต์ให้ตัวนำทางทราบด้วย arguments และ navArgument ระบบจะตรวจสอบและแปลงค่าให้คุณ

composable(
    "details/{id}",
    arguments = listOf(navArgument("id") { type = NavType.IntType })
) { /* ... */ }

NavType

NavType ใช้ประกาศชนิดข้อมูลของอาร์กิวเมนต์ เช่น IntType, StringType, BoolType และชนิดอื่น ๆ ตัวนำทางจะแยกวิเคราะห์ค่าจากเส้นทางตามชนิดนั้น

อ่านค่าอาร์กิวเมนต์

แลมบ์ดาของปลายทางจะมอบ backStackEntry ให้คุณ อ่านอาร์กิวเมนต์ได้จาก backStackEntry.arguments

composable(
    "details/{id}",
    arguments = listOf(navArgument("id") { type = NavType.IntType })
) { backStackEntry ->
    val id = backStackEntry.arguments?.getInt("id") ?: 0
    DetailsScreen(id = id)
}

นำทางพร้อมค่า

หากต้องการเปิดหน้าจอ ให้สร้างสตริงเส้นทางโดยแทนที่ตัวยึดตำแหน่งด้วยค่าจริง

navController.navigate("details/42")

สร้างเส้นทางอย่างปลอดภัย

ใช้เทมเพลตสตริงเพื่อแทรกค่า โดยส่วนเส้นทางต้องตรงกับเส้นทางที่ประกาศไว้ทุกประการ

val itemId = 42
navController.navigate("details/$itemId")

อาร์กิวเมนต์ไม่บังคับ

อาร์กิวเมนต์ไม่บังคับใช้รูปแบบสตริงคำค้นด้วย ?name=value และ defaultValue โดยสามารถละเว้นอาร์กิวเมนต์เหล่านี้เมื่อนำทางได้

composable(
    "search?query={query}",
    arguments = listOf(navArgument("query") {
        defaultValue = ""
    })
) { /* ... */ }

อาร์กิวเมนต์สตริงต้องใช้ด้วยความระมัดระวัง

อาร์กิวเมนต์สตริงต้องปลอดภัยสำหรับ URL หลีกเลี่ยงการส่งข้อความยาวหรือเครื่องหมายทับผ่านเส้นทาง สำหรับกรณีเหล่านี้ ควรใช้ ViewModel ที่ใช้ร่วมกันหรือคลังข้อมูลที่อ้างอิงด้วยรหัส

ส่งรหัส ไม่ใช่ออบเจ็กต์

แนวทางปฏิบัติที่ดีคือ ส่งตัวระบุขนาดเล็ก เช่น รหัสรายการผ่านเส้นทาง แล้วค้นหาออบเจ็กต์ทั้งหมดบนหน้าจอปลายทาง อย่าแปลงออบเจ็กต์ขนาดใหญ่เป็นข้อมูลอนุกรมแล้วใส่ไว้ในเส้นทาง

นำทุกอย่างมาประกอบกัน

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

composable("list") {
    ListScreen(onItemClick = { id ->
        navController.navigate("details/$id")
    })
}
composable(
    "details/{id}",
    arguments = listOf(navArgument("id") { type = NavType.IntType })
) { entry ->
    val id = entry.arguments?.getInt("id") ?: 0
    DetailsScreen(id = id)
}

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

คุณจะประกาศอาร์กิวเมนต์จำนวนเต็มที่จำเป็นและชื่อ id ในเส้นทางได้อย่างไร

สรุปทบทวน

การส่งอาร์กิวเมนต์:

  • ใส่ {placeholder} ไว้ในเส้นทาง
  • ประกาศชนิดด้วย navArgument + NavType
  • อ่านค่าจาก backStackEntry.arguments
  • นำทางโดยแทนที่ตัวยึดตำแหน่งด้วยค่า โดยส่งรหัสขนาดเล็ก ไม่ใช่ออบเจ็กต์ขนาดใหญ่

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

บทเรียน “การส่งอาร์กิวเมนต์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การส่งอาร์กิวเมนต์”

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

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

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

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

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

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

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

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

  1. การตั้งค่า NavHost
  2. การนำทางระหว่างหน้าจอ
  3. การส่งอาร์กิวเมนต์
  4. การนำทางด้านล่าง
← กลับไปที่ Android Academy