因為每個 activity 都內建一個 Menu 物件,所以要使用 menu 就不用新建 menu 物件,只要實做 Activity 裡的 onCreateOptionsMenu(Menu menu) 與 onOptionsItemSelected(MenuItem item) 就可以了。
MenuActivity
public class MenuActivity extends Activity { private static final int MENU_ITEM_1 = 10; private static final int MENU_ITEM_2 = 20; private static final int MENU_ITEM_3 = 30; private int total; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // 要呼叫這個才會加上 system menu,但是目前 Android 沒有提供任何 system menu item // 所以呼叫了也看不出差異 super.onCreateOptionsMenu(menu); // 加入3個 menu item // 16 為 group id,目前沒用到 // MENU_ITEM_1,2,3 為 item id,onOptionsItemSelected(...)會用到 // 1,3,2 為 order,代表 menu item 顯示的順序,不是看 menu.add(...) 的順序 menu.add(16, MENU_ITEM_1, 1, "壹"); menu.add(16, MENU_ITEM_3, 3, "參"); menu.add(16, MENU_ITEM_2, 2, "貳"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { TextView tv = (TextView) this.findViewById(R.id.tv); switch (item.getItemId()) { case MENU_ITEM_1: case MENU_ITEM_3: this.total += item.getItemId(); break; case MENU_ITEM_2: this.total -= item.getItemId(); break; default: // 交給別人來處理,有可能是 system menu return super.onOptionsItemSelected(item); } tv.setText(tv.getText() + "\n" + item.getTitle() + " -> " + this.total); // 回傳 true 表示已經處理完畢,不用再往外丟了 return true; } }結果如下,注意 menu item 的順序:
沒有留言:
張貼留言