การส่งอาร์กิวเมนต์
ส่งข้อมูลไปยังปลายทาง
การส่งอาร์กิวเมนต์ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งค่า NavHost
- การนำทางระหว่างหน้าจอ
- การส่งอาร์กิวเมนต์
- การนำทางด้านล่าง