สแตกย้อนกลับและลิงก์ลึก
ควบคุมประวัติและเปิดเส้นทางจาก URL
สแตกย้อนกลับและลิงก์ลึก เป็นบทเรียน Jetpack Compose Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Jetpack Compose Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Jetpack Compose Academy มีบทเรียนทั้งหมด 4 บทเรียน
กองประวัติย้อนกลับคืออะไร
back stack คือประวัติของหน้าจอที่คุณเคยเข้าชม การเรียก navigate แต่ละครั้งจะเพิ่มรายการใหม่ไว้ด้านบนของกองนี้
การย้อนกลับ
การเรียก popBackStack() จะนำรายการด้านบนออกและแสดงหน้าจอที่อยู่ถัดลงมา การปัดกลับของระบบก็ทำสิ่งเดียวกันโดยอัตโนมัติ
navController.popBackStack()นำรายการออกจนถึงเส้นทาง
ใช้ popUpTo ขณะนำทางเพื่อนำหน้าจอออกจากกองจนถึงเป้าหมาย เหมาะอย่างยิ่งสำหรับการกลับไปยังรากที่ทราบแน่ชัด
navController.navigate("home") {
popUpTo("home")
}หลีกเลี่ยงรายการซ้ำ
ตั้งค่า launchSingleTop เป็น true เพื่อให้การแตะปลายทางเดิมสองครั้งไม่สร้างสำเนาที่เหมือนกันซ้อนกัน
navController.navigate("home") {
launchSingleTop = true
}ล้างหน้าจอหลังเข้าสู่ระบบ
หลังเข้าสู่ระบบ ให้นำหน้าจอเข้าสู่ระบบออกด้วย inclusive = true เพื่อไม่ให้การกดย้อนกลับกลับไปยังหน้าจอนั้น
navController.navigate("home") {
popUpTo("login") { inclusive = true }
}ทำความรู้จักลิงก์ลึก
deep link จะเปิดหน้าจอเฉพาะโดยตรงจาก URL หรือการแจ้งเตือน โดยข้ามเส้นทางปกติที่ต้องผ่านแอปทีละขั้น
ประกาศลิงก์ลึก
แนบ navDeepLink เข้ากับปลายทางด้วยรูปแบบ URI Compose จะจับคู่ลิงก์ขาเข้ากับรูปแบบนั้น
composable(
"profile/{userId}",
deepLinks = listOf(navDeepLink { uriPattern = "app://profile/{userId}" })
) { }ลิงก์ลึกส่งอาร์กิวเมนต์ได้
ตัวยึดตำแหน่งใน URI ของลิงก์ลึกจะเติมค่าให้อาร์กิวเมนต์ของเส้นทาง การเปิด app://profile/42 จะไปยังหน้าจอโปรไฟล์โดยตั้งค่า userId เป็น 42
ลงทะเบียนตัวกรองเจตนา
สำหรับลิงก์จากภายนอกแอป ให้เพิ่ม intent-filter ที่ตรงกันในไฟล์กำกับ เพื่อให้ Android ส่ง URL ไปยังกิจกรรมของคุณ
ลิงก์ลึกสร้างกองประวัติ
Navigation Compose สามารถสร้าง back stack สำหรับลิงก์ลึกได้ ดังนั้นเมื่อกดย้อนกลับ ระบบจะไล่ไปยังหน้าหลักที่เหมาะสมแทนการออกจากแอป
สังเกตรายการปัจจุบัน
รวบรวม currentBackStackEntryAsState เพื่อโต้ตอบกับตำแหน่งที่ผู้ใช้อยู่ เหมาะสำหรับเน้นแท็บที่เลือก
val entry by navController.currentBackStackEntryAsState()
val route = entry?.destination?.routeตรวจสอบอย่างรวดเร็ว
จะหยุดไม่ให้การย้อนกลับไปยังหน้าจอเข้าสู่ระบบได้อย่างไร
สรุปทบทวน
ตอนนี้คุณควบคุมประวัติได้ด้วย popUpTo และ launchSingleTop และสามารถข้ามไปยังหน้าจอโดยตรงด้วยลิงก์ลึกที่สร้างกองประวัติที่เหมาะสมขึ้นใหม่ได้ด้วย 🚀
เรียนรู้ Kotlin ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “สแตกย้อนกลับและลิงก์ลึก” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สแตกย้อนกลับและลิงก์ลึก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Jetpack Compose Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Jetpack Compose Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สแตกย้อนกลับและลิงก์ลึก”
ควบคุมประวัติและเปิดเส้นทางจาก URL คุณปฏิบัติ Jetpack Compose Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Jetpack Compose Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Jetpack Compose Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “สแตกย้อนกลับและลิงก์ลึก” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Jetpack Compose Academy นี้ได้ไหม
ได้ บทเรียน Jetpack Compose Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- NavController และ NavHost
- ปลายทางและเส้นทาง Composable
- ส่งอาร์กิวเมนต์ระหว่างหน้าจอ
- สแตกย้อนกลับและลิงก์ลึก