| การ Intent ส่งข้อมูล ระหว่าง Activity android |
การ Intent ส่งข้อมูล ระหว่าง Activity androidตามหัวข้อเลยครับ วันนี่เราจะมาเรียนรู้ การส่งข้อมูล ไปมาระหว่าง Activity ในแอพพลิเคชั่น หรือ โปรแกรมแอนดรอยด์ โดยการศึกษาจาก แอพพลิเคชั่น ConvertMoney เป็นเรื่องต่อเนื่องมาจาก ตอนที่แล้ว ทดทวนครั้งที่แล้วซะหน่อย เรามีแค่ Activity เดียวเมื่อ แอพพลิเคชั่นแอนดรอยด์ ประมวลผล หรือ คำนวนค่าเงินมาได้ ผมต้องการให้ส่ง ข้อมูลของ 2 ค่านี้
ไปที่ Activity ที่สอง แล้วแสดงผลออกมา (ความจริงทำเป็น Toast ก็ได้แต่ว่า ง่ายไป และไม่ได้เรียนรู้ Intent ด้วย) เห็นไหมมีแค่ Activity เดียว
สร้าง Class ใหม่ไปที่ New > Class
ที่ New Java Classผมกำหนดชื่อ คลาส เป็น AnswerActivity และ Superclass เป็น android.app.Activity แบบนี้ครับ
ตัว eclipse จะ generate ค่าไฟล์ AnswerActivity.java ให้แบบนี้
และโค้ดอย่างนี้
ตอนนี้ คลาสของเรายังว่างๆ อยู่ ผมจะสร้าง เมธอด OnCreate ก่อน สร้าง Method บน Classการสร้าง เมธอด บน คลาส ก็แค่ ไปที่ Source > Override/Implement Methods แบบนี้
เลือกขนิดของ เมธอด ที่ต้องการสร้าง เลือก onCreate(Bundle)
ตัว eclipse จะ gen โค้ดให้แบบนี้
setContentViewคำสั่ง setContentView เป็นคำสั่งเพื่อบอกกับ Activity ว่าจะแสดง layout ไหน ? เราต้องการให้ AnswerActivity.java แสดง layout ที่อยู่ในไฟล์ answer.xml ก็ให้เพิ่มคำสั่งนี้เข้าไป
ประกาศตัวแปร และ Attribute
ผูกตัวแปร TextView โดยอ้างอิง id ใน answer.xml
รวมไปถึง Button ด้วย
OK เดียวเราพักโค้งของ AnswerActivity.java เอาไว้ก่อน Switch ไปที่ MainActivity.javaก่อนที่เราจะเพิ่มคำสั่ง Intent ผมขออนุญาติ ลบ คำสั่ง Toast ที่ทำไว้ก่อน
เพิ่มคำสั่ง Intentและผมเพิ่มคำสั่ง Intent และ แปลงค่าของ Answer จาก Double ไปเป็น String ไปเก็บไว้ในตัวแปร shAnswer จากนั้นใช้คำสั่ง Intent ส่งค่า shAnswer กับ unitMoney ไป AnswerActivity.java
กลับมาที่ AnswerActivity.javaคำสั่ง getIntent ในการรับค่าจาก การส่งค่า unitMoney และ shAnswer โดยนำไปเก็บไว้ในตัวแปร showHeadAnswer และ showAnswer setTextเสร็จแล้วผมจะใช้คำสั่ง setText เพื่อกำหนดค่าให้กับ txtHeadAnswer กับ txtAnswer
setOnClickListenerต่อมาผมทำการ setOnClickListener ให้กับปุ่ม btnBack สำหรับการกลับไปที่ Activity แรก
โดยกำหนดให้กระทำ finish() เมื่อคลิกปุ่ม
มาทดสอบโค้ดที่เขียนขึ้น1. ทดสอบบน AVD โดยการเปิด AVD แล้ว คลิก Run
ผมลอง แปลงเงินบาท 48000 ไปเป็นเงินปอนด์ จะได้ผลดังนี้
2. ทดสอบบนเครื่องจริง ต่อสาย usb เข้าคอมเลยครับ แล้ว เลีอก Run Configuration
ที่ tab Target ให้เลือก Manual
และเมื่อสั่ง Run จะเห็น มือถือที่ใช้ทดสอบ แบบนี้
|