動態更新功能表項目
通過重寫onPrepareOptionsMenu方法,你可以每次在功能表項目顯示時基於應用程式的狀態來修改菜單。它允許你動態disable/enable功能表項目,設定可見度以及修改菜單文本。
為了動態修改功能表項目,你可以在onCreateOptionsMenu方法中,在建立功能表項目時保留一個對它們的引用,或者你可以使用menu.findItem方法,如下面的程式碼片段所示,onPrepareOptionsMenu方法被重寫:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuItem menuItem = menu.findItem(MENU_ITEM);
[ ... modify menu items ... ]
return true;
}
處理菜單選擇
Android使用一個事件處理函數——onOptionsItemSelected 來處理所有的菜單選擇事件。被選擇的功能表項目會作為MenuItem參數傳入這個方法。
為了響應菜單選擇,將item.getItemId的值與當初定義功能表項目的ID進行比較,進行相應的處理,如下代碼所示:
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
// Find which menu item has been selected
switch (item.getItemId())
{
// Check for each known menu item
case (MENU_ITEM):
[ ... Perform menu handler actions ... ]
return true;
}
// Return false if you have not handled the menu item.
return false;
}