ความแตกต่างระหว่างกล่องโต้ตอบที่ถูกไล่ออกหรือยกเลิกใน Android คืออะไร?


193

เช่นเดียวกับชื่อกล่าวว่าอะไรคือความแตกต่างระหว่างกล่องโต้ตอบที่ถูกไล่ออกหรือยกเลิกใน Android?

คำตอบ:


187

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

ตัวอย่างเช่นคุณมีกล่องโต้ตอบใช่ / ไม่ใช่มาตรฐานบนหน้าจอ หากผู้ใช้คลิกไม่ใช่กล่องโต้ตอบจะถูกยกเลิกและค่าของ No จะถูกส่งกลับไปยังผู้โทร หากแทนที่จะเลือกใช่หรือไม่ใช่ผู้ใช้คลิกย้อนกลับเพื่อหนีจากกล่องโต้ตอบแทนที่จะเลือกแล้วกล่องโต้ตอบนั้นจะถูกยกเลิกและไม่มีค่าใดถูกส่งกลับไปยังผู้โทร


ขอบคุณสำหรับการตอบกลับ. ฉันกำลังพยายามกำหนดสิ่งที่จะเกิดขึ้นหากผู้ใช้กดปุ่มยกเลิกบน datepicker ครั้งแรกที่ฉันลองใช้ฟังการยกเลิกและการทำงาน แต่ก็เกิดขึ้นหากผู้ใช้เลือกเวลา จากนั้นฉันลองผู้ฟังที่ยกเลิกแล้วและมันก็ไม่เคยดับเลยแม้ว่าฉันจะกดยกเลิกก็ตาม คุณรู้หรือไม่ว่าฉันควรทำอย่างไร?
Aal

2
หากคุณใช้ DatePickerDialog คุณควรใช้ OnDateSetListener เพื่อรับการแจ้งเตือนเมื่อวันที่มีการเปลี่ยนแปลง หากมีคนคลิกปุ่มยกเลิก ... มันจะไม่ถูกเรียกใช้และกล่องโต้ตอบจะหายไปเอง สำหรับการใช้งานปกติของ DatePickerDialog คุณไม่จำเป็นต้องตั้งค่าฟังอื่น ๆ
ลี

FYI ปุ่มย้อนกลับจะกระตุ้นทั้งผู้ฟังที่ยกเลิกและผู้ฟังที่ถูกยกเลิก
เมือง

28

dismissDialogเป็นสิ่งที่คุณต้องโทรอย่างชัดเจนในรหัสของคุณมักจะตอบสนองต่อเหตุการณ์การคลิกที่ปุ่มในของคุณ ถ้าคุณต้องการคุณสามารถโทรdismissDialogในActivityซึ่งจะเปิดการโทรบนdismissDialog

cancelวิธีเดียวที่ดำเนินการเมื่อมีการเรียกอย่างชัดเจนในรหัสของคุณหรือเมื่อผู้ใช้กดปุ่ม BACK เมื่อบอกเลิกคุณDialogเปิด (ตาม @Lee ระบุไว้)

หากคุณใช้ a DatePickerดังนั้นทั้งหมดนี้ยังคงเป็นเช่นนั้น ในฐานะที่เป็น @Lee กล่าวว่าเพียงแค่ตรวจพบเมื่อผู้ใช้เลือกวันที่จากDatePickerDialog.OnDateSetListenerDatePicker

อ้างอิงนักพัฒนาซอฟต์แวร์ Androidให้ข้อมูลเพิ่มเติมเกี่ยวกับDialogs


นอกจากนี้คุณยังสามารถเรียกcancelวิธีการ มีผู้ฟังสองคนที่แตกต่างกันสำหรับการลดขนาดและการยกเลิก
creativecreatorormaybenot

12

Dismissการเรียกการยกเลิกจะลบไดอะล็อกออกจากหน้าจอ วิธีการนี้สามารถเรียกใช้ได้อย่างปลอดภัยจากกระทู้ใด ๆ โปรดทราบว่าคุณไม่ควรแทนที่เมธอดนี้เพื่อล้างข้อมูลเมื่อไดอะล็อกถูกไล่ออกแทนที่จะนำไปใช้ในonStopแทน

Cancelโทรยกเลิกยกเลิกยกเลิกไดอะล็อก สิ่งนี้จะเหมือนกับการเลิกโทร()แต่มันจะเรียกDialogInterfaceOnCancelListenerของคุณหากลงทะเบียน

Hide วิธีนี้ซ่อนกล่องโต้ตอบ แต่อย่ายกเลิก

และเพิ่มเติมดูที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.