73B21D91CDF552A77C3AB2890E5592  

Android menu 的 class 叫做 android.view.Menu,每個 activity 都內建一個 Menu 物件,可以加入多個 menu item(android.view.MenuItem) 或者 submenu(android.view.SubMenu,繼承自 android.view.Menu)。

 

因為每個 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;
}
}

 

創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()