[Android] 在Activity中加入選單(Menu)
Menu是Android Application特有的功能,當User按下Menu Button後,它會出現在程式的正下方,以提供其它額外系統動作。
程式碼說明:
1. 建立Menu XML描述檔案
在Resource資料夾中新增Menu資料夾,並加入XML描述檔,它包含了以下元素:
(1) menu:定義一個Menu物件,為xml的root node
(2) item:代表Menu中的選項,可以藉由設定其icon、title屬性改變選項外觀
雖然Menu可透過程式動態產生,但建議還是以外部xml檔案定義的方式建立,這對於程式維護以及了解選單結構比較有益。
<?xml version="1.0" encoding="UTF-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
>"
<item
android:id="@+id/add"
android:icon="@drawable/add"
android:title="新增"
/>
<item
android:id="@+id/buy"
android:icon="@drawable/buy"
android:title="購買"
/>
</menu>
2. 覆寫onCreateOptionsMenu建立Menu Object
onCreateOptionsMenu(Menu menu)會在Activity第一次建立Menu(使用者按下Menu鈕)時被呼叫,因此必須透過MenuInflater將xml檔案實體化Menu物件。
/**將xml透過MenuInflater轉換為Menu object instance*/
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.option_menu, menu);
return true;
}
3. 覆寫onOptionsItemSelected定義Menu選項對應的動作
當User選擇Menu的任一選項時,會呼叫Activity的onOptionsItemSelected()並傳入被選擇的MenuItem,可以簡單透過switch case以item id作相對應動作的對應,在本例將以Toast message顯示所選擇的option。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// 針對 item selection id 進行動作處理
switch (item.getItemId()) {
case R.id.add:
Toast.makeText(this, "Add action", Toast.LENGTH_SHORT).show();
return true;
case R.id.buy:
Toast.makeText(this, "Buy action", Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}


留言
張貼留言