การใช้ OptionsMenu ใน Android

Option Menu ใน Android ปกติแล้ว smart phone android จะมีปุ่มหลักอยู่ 3 ปุ่มคือ back , home, และ option โดยปุ่ม option menu ส่วนใหญ่จะอยู่ทางด้านขวา ซึ่งเรามาดูกันว่ามีขั้นตอนอะไรบ้างในการเขียนโปรแกรมเพื่อใช้งาน option menu นี้บ้าง

images

การใช้ OptionsMenu ใน Android

ขั้นแรกผมสร้างโปรเจ็คขึ้นมาใหม่ ตั้งชื่อว่า MenuOption ตามรูปครับ เมื่อสร้างเสร็จแล้วให้เราไปที่ folder res->menu ในนั้นจะเป็นที่เก็บ xml ไฟล์ที่กำหนด Option Menu ที่เราจะสร้างขึ้นในแต่ละ Activity

การใช้ OptionsMenu ใน Android

ซึ่งผมได้ทำการเพิ่ม menu เข้าไปอีก 2 อันมีโค้ดของ main.xml ดังนี้

[sourcecode language=”xml”]


[/sourcecode]

สังเกตค่า attribute ที่แปลกตาจาก xml ไฟล์ layout ทั่วไปคือ orderInCategory มันเป็นตัวกำหนดการเรียงลำดับการแสดงของ menu นั้นเอง ไม่เชื่อลองกำหนดสลับกันดูมันน่าจะเรียงจากค่าน้อยไปมากนะครับ

ส่วน showAsAction นั้นเท่าที่ผมเข้าใจจะเป็นการกำหนดค่าเพื่อใช้กับ Action Bar ซึ่งผมยังไม่ได้ศึกษาวิธีใช้เอาไว้ผมเข้าใจเมื่อไรจะมาเขียนวิธีใช้ต่อไปนะครับ

ต่อมาก็มาถึงโค้ดในส่วนของ Activity ซึ่งผมสร้างโปรเจ็คใหม่และไม่ได้เปลี่ยนแปลงอะไร Activity หลักก็คือ MainActivity ใน android sdk หลังๆนี้มันจะ generate method การสร้าง Option Menu มาให้แล้วแต่ถ้าไม่ก็ต้องทำการ implement ครับซึ่งมีชื่อ method ว่า onCreateOptionsMenu โดยในส่วนของ onCreateOptionsMenu นั้นผมไม่ได้ทำการแก้ไขอะไรเลยมีโค้ดดังนี้ครับ

[sourcecode language=”java”]

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

[/sourcecode]

ซึ่งโค้ดในส่วนนี้จะเป็นการสร้าง option menu เมื่อมีการกดปุ่มโดยสังเกตว่าจะมีการกำหนดไฟล์ xml ที่จะกำหนด item menu ที่จะแสดงไว้ด้วย นั้นก็คือไฟล์ main.xml โดยอ้างอิงคือ R.menu.main ส่วนคำสั่งการสร้าง option menu นั้นเท่าที่ผมดูๆจากหลายตัวอย่างมาค่อยข้างจะตายตัวที่คำสั่ง getMenuInflater().inflate ครับไม่เคยเจอวิธีอื่นหรือคำสั่งอื่นเลย

ต่อมาจะเป็น method ที่ต้องทำการ implement เพื่อให้เวลา option menu ถูกเลือกจะได้ทำงานได้โดยมี method ที่ชื่อว่า onOptionsItemSelected เพื่อไม่ให้เสียเวลาในการพิมพ์โค้ดสามารถ คลิกขวาบนหน้าจอโค้ดแล้วเลือก Source -> Override / Implement Methods แล้วมองหาชื่อ method นี้ครับมันจะ generate มาให้ ซึ่งต่อจากนั้นผมก็แก้โค้ดเป็นดังนี้

[sourcecode language=”java”]

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.action_settings:
Toast.makeText(getApplicationContext(), “action_settings Activity”, Toast.LENGTH_SHORT).show();
break;
case R.id.Option1:
Toast.makeText(getApplicationContext(), “Option1 Activity”, Toast.LENGTH_SHORT).show();
break;
case R.id.Option2:
Toast.makeText(getApplicationContext(), “Option2 Activity”, Toast.LENGTH_SHORT).show();
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}
[/sourcecode]

ซึ่ง method นี้จะถูกเรียกใช้งานเมื่อมีการเลือก menu สังเกตว่า parameter ที่ส่งมาให้ method นี้คือ MenuItem นั้นก็คือ Menu ที่เราทำการเลือกนั้นเอง ต่อจากนั้นเราก็มา switch case เพื่อเช็คดูว่า menu ไหนที่ถูกเลือกเพื่อทำการเขียน process ต่อไปโดยในการเช็คว่า menu ไหนถูกเลือกนั้นจะใช้คำสั่ง .getItemId จากนั้นก็เทียบกับ Id ในไฟล์ xml menu ที่เราเลือกที่จะใช้งานนั้นเอง โดยในตัวอย่างแค่แสดงข้อความเท่านั้นครับในแต่ละ case

3

ผลลัพธ์การรัน ก็เป็นอันเสร็จขั้นตอนอย่างง่ายในการใช้ OptionMenu ของ android ก็ขอจบบทความไว้เพียงเท่านี้ครับติดตามกันใหม่ในบทความหน้านะครับ

Download SourceCode

Leave a Reply

Your email address will not be published. Required fields are marked *