メニューボタンを押した時のメニューを表示する
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の積極的な活用にも取り組み中。
とっても恥ずかしがり。