メニューリソース(menu)の簡単な使用


Androidのメニューはオプションメニュー、コンテキストメニュー、サブメニューに分かれており、XMLファイルで定義を宣言し、コードではMenuInflaterクラスで使用できます.
典型的なメニューリソースファイル構造は、ルート要素、ルート要素にサブ要素をネストし、要素にをネストしてサブメニューを形成することもできます.は、同じメニューグループでプロパティを設定できるメニューグループを表します.
次に、File、Edit、Helpの3つのメニュー項目を含むファイルシステムのメニュー情報を定義する例を示します.FileメニューにはNew、Open、Saveサブメニューがあります.
EditメニューにはCut、Copy、Pastサブメニュー、HelpメニューにはAboutとExitサブメニューがあります.Helpサブメニューはクリックイベントに応答します.
Activity:
package com.lovo;

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

public class TestMenuActivity extends Activity {
	/**     MenuInflater   */
	private MenuInflater mi = new MenuInflater(this);

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test_menu);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		//   MenuInflater inflate  ,          
		mi.inflate(R.menu.file_menu, menu);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		//        
		case R.id.about:
			aboutAlert("                   !");
			break;
		case R.id.exit:
			exitAlert("      ?");
			break;
		}
		return true;
	}

	private void exitAlert(String msg) {
		//    AlertDialog.Builder  
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		//       
		builder.setMessage(msg).setCancelable(false)
		//     
				.setPositiveButton("  ", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						//   Activity
						finish();
					}
				})
				//     
				.setNegativeButton("  ", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						return;
					}
				});
		//      
		AlertDialog alert = builder.create();
		//      
		alert.show();
	}

	private void aboutAlert(String message) {
		//    AlertDialog.Builder  
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage(message).setCancelable(false)
		//     
				.setPositiveButton("  ", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
					}
				});
		//      
		AlertDialog alert = builder.create();
		//      
		alert.show();
	}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="      " />

</LinearLayout>

menuXML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:title="File">
        <menu>
            <group
                android:id="@+id/noncheckable_group"
                android:checkableBehavior="none" >
                <item
                    android:id="@+id/newFile"
                    android:alphabeticShortcut="n"
                    android:title="New"/>
                <item
                    android:id="@+id/openFile"
                    android:alphabeticShortcut="o"
                    android:title="Open"/>
                <item
                    android:id="@+id/saveFile"
                    android:alphabeticShortcut="s"
                    android:title="Save"/>
            </group>
        </menu>
    </item>
    <item android:title="Edit">
        <menu>


            <!-- checkableBehavior="single"        -->
            <group
                android:id="@+id/edit_group"
                android:checkableBehavior="single" >
                <item
                    android:id="@+id/cut"
                    android:title="Cut"/>
                <item
                    android:id="@+id/copy"
                    android:title="Copy"/>
                <item
                    android:id="@+id/past"
                    android:title="Past"/>
            </group>
        </menu>
    </item>
    <item android:title="Help">
        <menu>
            <group android:id="@+id/help_group" >
                <item
                    android:id="@+id/about"
                    android:title="About"/>
                <item
                    android:id="@+id/exit"
                    android:title="Exit"/>
            </group>
        </menu>
    </item>

</menu>