libro
www.tuyano.com
Google androidプログラミング入門

GUI、再び! (4/7)

作成:2010-06-17 12:20
更新:2010-06-17 12:20

■オプションメニューを作る

Androidのアプリでは、「メニュー」ボタンを押すと、画面の下からメニューがプルアップして現れます。このメニューも、もちろん作成することができます。

これは「オプションメニュー」というもので、Activityクラスには、メニュー生成時のイベント処理を行うためのメソッドが用意されています。これをオーバーライドし、その中でメニューを実装する処理を用意すれば、そのメニューがActivityで使えるようになります。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    ……ここにメニュー作成処理を用意する……
}
これがそのメソッドです。引数には、「メニュー」ボタンで表示されるメニューとなる「Menu」クラスのインスタンスが渡されます。このMenuに、「MenuItem」というメニュー項目のインスタンスを作成して組み込むことで、メニューを作成していくことができます。

○メニュー項目の作成
MenuItem 変数 = [Menu].add( 項目名 );
メニュー項目は、Menuの「add」メソッドで作成します。これは、そのMenuに新しいメニュー項目を追加するためのもので、引数には項目に表示されるテキストを指定します。

○OnMenuItemClickListenerの組み込み
[MenuItem].setOnMenuItemClickListener( [OnMenuItemClickListener] );
メニューをクリックした時の処理は、「setOnMenuItemClickListener」メソッドでイベントリスナーを設定して行います。引数には、OnMenuItemClickListenerインスタンスを用意します。

○OnMenuItemClickListenerの定義
new OnMenuItemClickListener(){
    public boolean onMenuItemClick(MenuItem item){
        ……メニュー項目を選んだ時の処理……
    }
}
これが、OnMenuItemClickListenerの内容です。onMenuItemClickというメソッドを1つもっており、メニューを選択するとこれが呼び出されます。引数には、イベントが発生したMenuItemインスタンスが渡されます。

では、実際にメニューを作成してみましょう。以下にサンプルを掲載しておきます。「Toast」「Alert」という2つのメニュー項目があり、選択すると、それぞれトーストまたはアラートダイアログを表示します。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package jp.tuyano;

import android.app.*;
import android.os.Bundle;
import android.view.*;
import android.view.MenuItem.OnMenuItemClickListener;
import android.widget.*;

public class SampleApp extends Activity {
	private Activity me;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		me = this;
		setContentView(R.layout.main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		MenuItem item1 = menu.add("Toast");
		MenuItem item2 = menu.add("Alert");
		OnMenuItemClickListener listener1 = new OnMenuItemClickListener(){
			public boolean onMenuItemClick(MenuItem item){
				Toast toast = Toast.makeText(me,"トーストです。",Toast.LENGTH_LONG);
				toast.show();
				return false;
			}
		};
		OnMenuItemClickListener listener2 = new OnMenuItemClickListener(){
			public boolean onMenuItemClick(MenuItem item){
				AlertDialog.Builder builder = new AlertDialog.Builder(me);
				builder.setMessage("アラートだよ。");
				builder.show();
				return false;
			}
		};
		item1.setOnMenuItemClickListener(listener1);
		item2.setOnMenuItemClickListener(listener2);
		return true;
	}

}

※関連コンテンツ

「Google androidプログラミング入門」に戻る