2012年2月5日 星期日

[TQC+ Android] 1-5 MENU 功能選單





使用者按MENU按鈕 , 顯示MENU選單 , 這題也相當簡單 , 只是要考在menu加上items的使用和AlertDialog的設定按鈕及事件 , 以下是程式碼。




package COM.TQC.GDD01;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class GDD01 extends Activity {
 
 
 final int ADD = Menu.FIRST , DELETE = Menu.FIRST+1 , 
           ABOUT = Menu.FIRST+2 , QUIT = Menu.FIRST+3 ;
 // ...
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    @Override
    //建立menu選單的項目
    public boolean onCreateOptionsMenu(Menu menu)
    {
     super.onCreateOptionsMenu(menu);
     
     //新增menu選單,再利用onOptionsItemSelected擷取選單選擇項目,處理相對應的事件
     menu.add(0, ADD, 0, R.string.menu_add);
     menu.add(0, DELETE, 1, R.string.menu_delete);
     menu.add(0, ABOUT, 2, R.string.menu_about);
     menu.add(0, QUIT, 3, R.string.menu_exit);
          
     return true ; 
    }
    //menu被選擇執行後的事件處理
    public boolean onOptionsItemSelected(MenuItem item)
    {
     //點選menu,出現四個選擇,以switch區分點選何項,設定title並繫結至其功能
     switch(item.getItemId())
     {
        case ADD:
        case DELETE:
         this.setTitle(item.getTitle());
         break;
        case ABOUT:
         openAboutDialog();
         break;
        case QUIT:
         openExitDialog();
         break;      
     }
     return super.onOptionsItemSelected(item) ;
    }
    
    //點選「關於」功能
    public void openAboutDialog()
    {     
     AlertDialog.Builder AB = new AlertDialog.Builder(this);
     AB.setMessage(R.string.menu_about_msg)
     .setTitle(R.string.menu_about)
     .setPositiveButton(R.string.str_ok, 
        new OnClickListener()
     {
   @Override
   public void onClick(DialogInterface dialog, int which)
   {
    // TODO Auto-generated method stub
    // 按下確認後會關閉Dialog即可
   }          
     }     
     )
     .show();
    }
    //點選「離開」功能
    public void openExitDialog()
    {
        //開啟視窗詢問【是否確認離開系統?】,於訊息視窗點選「確認」後,關閉程式
     //於訊息視窗點選「取消」,則關閉此詢問視窗,則回到MENU功能選單畫面
     
     AlertDialog.Builder AB = new AlertDialog.Builder(this);
     AB.setMessage(R.string.menu_exit_msg)
     .setTitle(R.string.menu_exit)
     .setPositiveButton(this.getText(R.string.str_ok), 
        new OnClickListener()
     {
   @Override
   public void onClick(DialogInterface dialog, int which)
   {
    // TODO Auto-generated method stub
    GDD01.this.finish();
   }          
     }     
     )
     .setNegativeButton(this.getText(R.string.str_cancel), 
        new OnClickListener()
     {
   @Override
   public void onClick(DialogInterface dialog, int which)
   {
    // TODO Auto-generated method stub
    // 取消關閉程式
   }          
     }     
     )
     .show();    
    }
}


這題不用額外配置layout , 所以不附上main.xml







P.S. 題目中所要求的Variable和Method皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....



1 則留言:

Google Analytics