因為每個 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 的順序:

沒有留言:
張貼留言