メニューボタンを押した時のメニューを表示する - Android

Androidアプリケーションでメニューキーを押したときにメニューを表示するコードを紹介します。

メニューを表示する

プロジェクトの設定

  • Project name: SimpleMenu
  • Build Target: Android 2.3.3
  • Application name: SimpleMenu
  • Package name: iPentec.SimpleApp.SimpleMenu
  • Activity: SimpleMenuActivity

コード

package iPentec.SimpleApp.SimpleMenu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

public class SimpleMenuActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }
    
  @Override
  public boolean onCreateOptionsMenu(Menu menu){
    menu.add(Menu.NONE, 0, 0, "メニュー1");
    menu.add(Menu.NONE, 1, 1, "メニュー2");
	
    return super.onCreateOptionsMenu(menu);
  }
}

解説

メニューの表示は オーバーライドしたonCreateOptionsMenu()メソッドに実装します。引数で与えられるMenuクラスのaddメソッドでアイテム要素を追加します。addメソッドの第一引数にグループID、第二引数にメニューのID番号、第三引数に並び順、第四引数にメニューに表示するテキスト文字列を与えます。

return super.onCreateOptionsMenu(menu);
戻り値は基底クラスの戻り値とします。

実行結果

アプリケーションを起動すると下図の画面が表示されます。


[MENU]キーを押します。画面の下部にメニューが表示されます。

メニュー選択時のイベントを作成する

メニューがタップされた時の処理を追加します。

コード

package iPentec.SimpleApp.SimpleMenu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class SimpleMenuActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(Menu.NONE, 0, 0, "メニュー1");
    menu.add(Menu.NONE, 1, 1, "メニュー2");

    return super.onCreateOptionsMenu(menu);
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    Toast ts;
    if (item.getItemId() == 0) {
      ts = Toast.makeText(this, "メニュー1が選択されました", Toast.LENGTH_LONG);
      ts.show();
    } else if (item.getItemId() == 1) {
      ts = Toast.makeText(this, "メニュー2が選択されました", Toast.LENGTH_LONG);
      ts.show();

    }
    return true;
  }
}

解説

メニュー選択時のイベントはオーバーライドしたonOptionsItemSelected()メソッドに実装します。

Toast ts;
if (item.getItemId() == 0) {
  ts = Toast.makeText(this, "メニュー1が選択されました", Toast.LENGTH_LONG);
  ts.show();
} else if (item.getItemId() == 1) {
  ts = Toast.makeText(this, "メニュー2が選択されました", Toast.LENGTH_LONG);
  ts.show();
}
return true;
選択(タップ)したメニューの情報はonOptionsItemSelected()の引数で与えられるMenuItemクラスの引数に設定されています。選択した要素のIDはMenuItemクラスのgetItemId()メソッドで取得できます。要素のIDはメニュー追加時にMenu.addメソッドで与えたメニューID番号です。今回のプログラムでは選択したメニューに応じてトーストで表示するメッセージの内容を変えます。メニュー1を選択した場合は「メニュー1が選択されました」のメッセージを画面に表示し、メニュー2を選択した場合は「メニュー2が選択されました」のメッセージを画面に表示します。

実行結果

アプリケーションを実行します。下図の画面が表示されます。


メニュー1をタップすると下図のメッセージが表示されます。


再度メニューボタンを押してメニューを表示させて、メニュー2をタップすると下図のメッセージが表示されます。

著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-04
作成日: 2012-02-09
iPentec all rights reserverd.