การ Intent ส่งข้อมูล ระหว่าง Activity android

การ Intent ส่งข้อมูล ระหว่าง Activity android

ตามหัวข้อเลยครับ วันนี่เราจะมาเรียนรู้ การส่งข้อมูล ไปมาระหว่าง Activity ในแอพพลิเคชั่น หรือ โปรแกรมแอนดรอยด์ โดยการศึกษาจาก แอพพลิเคชั่น ConvertMoney เป็นเรื่องต่อเนื่องมาจาก ตอนที่แล้ว

ทดทวนครั้งที่แล้วซะหน่อย เรามีแค่ Activity เดียวเมื่อ แอพพลิเคชั่นแอนดรอยด์ ประมวลผล หรือ คำนวนค่าเงินมาได้ ผมต้องการให้ส่ง ข้อมูลของ 2 ค่านี้

  1. ค่าเงินที่แปลงได้ (Answer)
  2. หน่วยที่ user ต้องการจะแปลงไป (USD , GBP , EUR)

ไปที่ 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

  1. txtHeadAnswer แสดง หน่วยเงิน
  2. txtAnswer แสดงค่าเงินที่คำนวนได้
  3. btnBack ควบคุมปุ่ม
  4. showHeadAnswer ไว้รับค่าที่ส่งมาจาก activity แรก ในชื่อ unitMoney
  5. showAnswer รับค่าจาก activity ในชื่อ Answer

 

 

ผูกตัวแปร 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 จะเห็น มือถือที่ใช้ทดสอบ แบบนี้

 

 

 

 

 

 

คู่มือการอบรมแอนดรอยด์ สำหรับ ผู้เริ่มต้น

Open publication - Free publishing - More android

joomla stats



Powed By EWTC easy4com workshop & training center

53 Bangna-Trad14 Bangna Bangkok 10260

office:02-393-0970 fax:02-399-2542 hotline24/7:081-859-5309