Android onActivityResult คืออะไร

เมื่อพัฒนาแอปพลิเคชันบนแพลตฟอร์ม Android หนึ่งในสิ่งที่นักพัฒนามักจะต้องเจอคือการจัดการผลลัพธ์จากกิจกรรมอื่นที่เรียกใช้ไป ฟังก์ชัน onActivityResult เป็นเครื่องมือสำคัญที่ใช้ในการรับข้อมูลจากกิจกรรมอื่นๆ ที่เราทำการเปิดใช้ผ่านฟังก์ชัน startActivityForResult

ฟังก์ชันนี้ถูกออกแบบมาเพื่อให้เราสามารถรับค่าต่างๆ ที่ส่งกลับมาจากกิจกรรมที่เรียกใช้งานได้ ไม่ว่าจะเป็นการรับค่าจากกล้อง การเลือกไฟล์จากระบบ หรือแม้กระทั่งการรับค่าจากหน้าจอการตั้งค่าของแอปพลิเคชัน การใช้งาน onActivityResult จึงเป็นสิ่งที่ขาดไม่ได้ในการพัฒนาแอปพลิเคชันที่มีการโต้ตอบกับผู้ใช้ในหลายๆ มิติ

Android onActivityResult คืออะไร?

onActivityResult เป็นเมธอดใน Android ที่ใช้ในการรับผลลัพธ์จากการเรียกใช้งาน Activity อื่นๆ โดยปกติแล้วเมื่อเราเริ่มต้น Activity ใหม่จาก Activity ปัจจุบันโดยการใช้ startActivityForResult() เราจะต้องการรับผลลัพธ์จาก Activity นั้น เมื่อการทำงานเสร็จสิ้น เมธอด onActivityResult จะถูกเรียกใช้โดยอัตโนมัติ ซึ่งจะช่วยให้เราสามารถจัดการกับข้อมูลที่ได้รับกลับมา เช่น ผลลัพธ์จากการถ่ายภาพ หรือการเลือกไฟล์

วิธีการใช้งาน onActivityResult ในแอป Android

onActivityResult เป็นเมธอดที่ใช้ในแอป Android เพื่อรับค่ากลับจาก Activity หรือ Fragment ที่ถูกเรียกใช้งานก่อนหน้านี้ ซึ่งมักจะใช้เมื่อคุณต้องการส่งค่ากลับจาก Activity ลูกไปยัง Activity หลัก เช่น การเลือกภาพจากแกลเลอรี่ หรือการขอสิทธิ์จากผู้ใช้

การใช้งานพื้นฐานของ onActivityResult

ในการใช้งาน onActivityResult สิ่งแรกที่ต้องทำคือการเรียกใช้ startActivityForResult() เพื่อเปิด Activity ที่คุณต้องการรับผลลัพธ์ จากนั้นเมื่อ Activity นั้นเสร็จสิ้นและต้องการส่งค่ากลับ ก็จะเรียกใช้เมธอด setResult() ซึ่งข้อมูลนี้จะถูกส่งกลับไปยัง onActivityResult ใน Activity ที่เรียกใช้

ตัวอย่างการใช้งาน onActivityResult

ตัวอย่างโค้ดด้านล่างจะแสดงวิธีการใช้งาน onActivityResult อย่างง่าย ๆ

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { // ทำการประมวลผลข้อมูลที่ได้รับจาก Activity ลูก String result = data.getStringExtra("key"); // แสดงผลลัพธ์ textView.setText(result); } }

ข้อควรระวัง

ควรตรวจสอบ requestCode และ resultCode เสมอในการใช้งาน onActivityResult เพื่อให้แน่ใจว่าค่าที่ได้รับกลับมานั้นมาจาก Activity ที่ถูกต้องและเป็นค่าที่ถูกส่งกลับมาอย่างถูกต้อง

เคสที่พบได้บ่อยในการใช้งาน onActivityResult

ในการพัฒนาแอปพลิเคชันบน Android นักพัฒนามักจะต้องรับผลลัพธ์จากกิจกรรมที่เปิดขึ้นมาและปิดไป โดยวิธีการนี้สามารถทำได้ด้วยการใช้ onActivityResult ซึ่งเป็นเมธอดที่ใช้รับข้อมูลผลลัพธ์จากกิจกรรมที่เปิดใช้งานไปก่อนหน้านี้ ในการใช้งานจริงมีหลายกรณีที่นักพัฒนาจะต้องเผชิญในการจัดการกับข้อมูลผลลัพธ์นี้:

  • การรับข้อมูลจากกล้องถ่ายรูป – เมื่อผู้ใช้ถ่ายภาพเสร็จสิ้นและแอปพลิเคชันต้องการรับภาพถ่ายนั้นเพื่อนำมาใช้งานต่อ
  • การเลือกไฟล์จากเครื่อง – ในกรณีที่ผู้ใช้เลือกไฟล์จากแกลลอรี่หรือจากระบบไฟล์ของเครื่องและแอปพลิเคชันต้องการนำไฟล์นั้นมาใช้งาน
  • การรับผลจากการเข้าสู่ระบบ

    สรุปความแตกต่างระหว่าง onActivityResult กับ startActivityForResult

    ในการพัฒนาแอปพลิเคชัน Android การใช้งานทั้ง onActivityResult และ startActivityForResult นั้นมีบทบาทที่สำคัญในการสื่อสารระหว่าง Activity ต่าง ๆ ภายในแอปพลิเคชันเดียวกัน.

    แม้ว่าทั้งสองฟังก์ชันนี้จะทำงานร่วมกันได้ แต่หน้าที่ของแต่ละฟังก์ชันนั้นมีความแตกต่างกันอย่างชัดเจน ซึ่งสำคัญสำหรับนักพัฒนาในการเลือกใช้งานให้เหมาะสมกับสถานการณ์ที่ต้องการ.

    ความแตกต่างหลักระหว่าง onActivityResult และ startActivityForResult

  • startActivityForResult: ฟังก์ชันนี้ใช้ในการเรียกใช้งาน Activity อื่น โดยคาดหวังว่าจะได้รับผลลัพธ์บางอย่างกลับมาเมื่อ Activity ที่เรียกใช้เสร็จสิ้น.
  • onActivityResult: ฟังก์ชันนี้จะถูกเรียกใช้งานเมื่อ Activity ที่ถูกเรียกด้วย startActivityForResult ส่งผลลัพธ์กลับมา ซึ่งนักพัฒนาจะต้องจัดการผลลัพธ์เหล่านั้นในฟังก์ชันนี้.

ดังนั้น การเลือกใช้งานระหว่าง onActivityResult และ startActivityForResult ควรพิจารณาถึงลักษณะงานที่ต้องการจัดการข้อมูลระหว่าง Activity อย่างละเอียด เพื่อให้การทำงานของแอปพลิเคชันนั้นสมบูรณ์และไม่มีข้อผิดพลาด.