基本的なことですが、Androidでメニューを作成し、メニューが選択された時の処理を作成する方法をまとめておきます。
- onCreateOptionsMenu(Menu menu) がメニュー生成のためのメソッド
- MenuInflater クラスがメニューを作成するためのクラス
- onOptionsItemSelected(MenuItem item) がメニューが選択された時に呼ばれるメソッド
|
■■■■メニュー生成のためのメソッド
Android端末のメニューボタンを押すと画面にポップアップして現れるメニューをオプションメニューと言います。
オプションメニューは、ActivityクラスのonCreateOptionsMenuというメソッドをオーバーライドして作成します。
これは、AndroidStudioでBlank Activityなどを指定してプロジェクトを作成すると、MainActivityクラスに、作成されているものです。
Activityが作成され、オプションメニューを作成する段階になると、自動的にこのメソッドが実行され、メニューの組み込みが行われます。
■■■■MenuInflater
実際にメニュー項目を登録するには、MenuInflaterクラスを使います。
・Activityが持つgetMenuInflater()を使ってMenuInflaterオブジェクトの取得
MenuInflater menuInflater = getMenuInflater();
|
・メニューの生成
menuInflater.inflate(メニューのリソース,Menuのインスタンス);
|
・メニュー項目を追加するなら
onCreateOptionsMenuメソッドの中で書くなら次のようになります。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
menu.add("aaa");
return true;
}
|
res/menu/menu_main.xmlは以下のようになっています。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.yoko.myapplication.MainActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100" ※
android:title="@string/action_settings"
app:showAsAction="never" /> ※
</menu>
|
これで、メニューボタンを押すと下のように表示されます。
※menu_main.xmlのandroid:orderInCategoryはメニューの並びに関する値で、設定された値に従って、表示されます。
この値が小さければ最小の方に、大きければ最後の方に並べられます。
※menu_main.xmlのapp:showAsActionはアクションバーでのメニューの表示に関するものです。
アクションバーは画面の幅が広い時には重要なメニューをボタンとして表示します。
app:showAsActionはボタンとして表示するかどうかを指定するもので以下のような値が設定できますが、上では、neverとして、ボタンとして表示しないようにしています。
never |
表示しない |
ifRoom |
表示できるならする |
withText |
テキストも一緒に表示する |
always |
常に表示する |
collapseActionView |
ActionViewを表示するときに使う |
もし、alwaysとすると、次のようにSettingsというボタンがメニューボタンの横に表示されます。
■■■■メニューが選択された時に呼ばれるメソッド
表示されたメニューをユーザが選ぶとonOptionsItemSelectedというメソッドが呼び出されます。
引数選択されたMenuItemのインスタンスが渡されますので、それによって必要な処理を書きます。
下の例では、aaaというMenuItemが選択された時にトーストを表示しています。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if("aaa".equals(item.getTitle())) {
Toast toast = Toast.makeText(this,"aaaが選択されました",Toast.LENGTH_SHORT);
toast.show();
}
return super.onOptionsItemSelected(item);
}
|
にほんブログ村