2012-07-30

Android Menu(菜單)應用

Android智慧型手機上都有最少三個按鍵:Menu、首頁、退後鍵

今天就來介紹Menu(菜單),可以幫助應用程式做一些共用功能如:設定、重新整理

結束、關於我、說明.....等,可以說也是一個蠻實用及常用的功能之一

下面就開始為您說明如果在應用程式中加入Menu功能:

因為main.xml是一個空白,所以在這就不放上程式碼了


strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="ok_label">關閉</string>
    <string name="app_name">DemoMenu</string>
     <string name="MENU_ABOUT">關於..</string>
     <string name="MENU_Refresh">重新整理</string>
     <string name="MENU_close">結束</string>
     <string name="about_title">關於..</string>
    <string name="about_msg">注意!你在看我嗎? \n\n
                                 你可以再近一點! \n\n
                                 你真的可以再近一點! </string>
     </resources>

DemoMenuActivity.java
package jim.demo.menu;

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

public class DemoMenuActivity extends Activity {
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    //定義三個menu
    protected static final int MENU_ABOUT = Menu.FIRST;
    protected static final int MENU_Refresh = Menu.FIRST+2;
    protected static final int MENU_close = Menu.FIRST+1;
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        //加入應用程式menu中,分別是:關於我、重新整理、結束
        menu.add(0, MENU_ABOUT, 0, getString(R.string.MENU_ABOUT));
        menu.add(0, MENU_Refresh, 0, getString(R.string.MENU_Refresh));
        menu.add(0, MENU_close, 0, getString(R.string.MENU_close));
        return true;
   }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        super.onOptionsItemSelected(item);
        switch(item.getItemId()){
             //關於我
             case MENU_ABOUT:
              //顯示關於我對話方塊
                 openOptionsDialog();
                 break;
             //重新整理
             case MENU_Refresh:
               //本頁跳轉到本頁是最簡單的重新整理方式  
              Intent intent = new Intent();
              intent.setClass(DemoMenuActivity.this,DemoMenuActivity.class);
                 startActivity(intent);
                 
                 //記得結束掉本頁,不然會出現按下倒退鍵還是在本頁而不是跳出的狀況
                 this.finish();
                 
                 break;   
             //結束 
             case MENU_close:
                 finish();
                break;
          }
          return true;
    }
    
    private void openOptionsDialog() {
        AlertDialog.Builder dialog = new AlertDialog.Builder(DemoMenuActivity.this);
        //標題
        dialog.setTitle(R.string.about_title);
        //內容
        dialog.setMessage(R.string.about_msg);
        //中間的關閉按鈕
        dialog.setPositiveButton(R.string.ok_label,
            new DialogInterface.OnClickListener(){
                public void onClick(
                        DialogInterface dialoginterface, int i){
                        }
                });
        //顯示對話方塊
        dialog.show();
    }
}

執行後畫面



後記:

         Menu因為已經是預設的頁面功能了,所以不需要元件,只要加入onCreateOptionsMenu

        再設定按下Menu後的事件onOptionsItemSelected就可以了,記得這幾個是寫在onCreate

        之外的,有一點值得注意的是我在使用AlertDialog時,內容的換行是可以用"\n\n"


        以上為您說明到這,感謝您。

沒有留言:

張貼留言

您的寶貴建議是我前進的動力!