產生功能表作業之程式框架
由Source功能表點選「Override/Implement Methods...」功能表項目開啟「Override/Implement Methods」對話視窗,然後由「Select methods to override or implements:」清單中勾選onCreateOptionsMenu(Menu)及onOptionsItemSelected(MenuItem)項目,ADT就會產生應用程式功能表作業所需的程式框架。
建立功能表項目
首先必須在onCreateOptionsMenu()方法中建立功能表項目,我們可使用add()方法加入功能表項目。另外,可使用setIcon()方法為功能表項目設定圖示。
以下程式碼會將「關於…」及「結束…」二個功能表項目加入到應用程式功能表中。
以下程式碼會將「關於…」及「結束…」二個功能表項目加入到應用程式功能表中。
final int MENU_ABOUT = 0;
final int MENU_QUIT = 1;@Override
public boolean onCreateOptionsMenu (Menu menu) {
// TODO Auto-generated method stub
final int ICON_ABOUT = android.R.drawable.ic_menu_help;
final int ICON_QUIT = android.R.drawable.ic_menu_close_clear_cancel;
menu.add (0, MENU_ABOUT, 0, "關於");
menu.add (0, MENU_QUIT, 0, "結束");
menu.getItem (MENU_ABOUT).setIcon (ICON_ABOUT);
menu.getItem (MENU_QUIT).setIcon (ICON_QUIT);
return super.onCreateOptionsMenu (menu);
}
撰寫功能表項目之作業程式碼
由於所有功能表項目是共用一個處理程序,程式中可透過getItemId()方法來區辨目前是那一個功能表項目被觸動,並針對每一個功能表項目分別撰寫作業程式碼。
例如當使用者按下「關於…」,程式要顯示「關於」對話盒,這部份可套用先前介紹的AlertDialog物件;而當使用者按下「結束…」,則直接呼叫Android內建的finish()函式關閉目前的activity。
例如當使用者按下「關於…」,程式要顯示「關於」對話盒,這部份可套用先前介紹的AlertDialog物件;而當使用者按下「結束…」,則直接呼叫Android內建的finish()函式關閉目前的activity。
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()){
case MENU_ABOUT:openAboutDialog();
break;
case MENU_QUIT:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
private void openAboutDialog() {
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).create();
dialog.setTitle("關於遊戲科學");
dialog.setMessage("南開科技大學電子工程系電腦遊戲設計組");
dialog.setButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
dialog.show();
}