Androidアプリ メニューの実装

調べてもしっくり来る記事がなかったんで実際に自分が作ったときのメモ
Androidアプリでメニューをつくるには?と思って調べると、

onCreateOptionsMenu

↑こいつを使えばいい

としか書かれていない記事が多い。

自分が知りたかったのは、それでどうやって別画面を表示するなのかである。onCreateOptionsMenuだけだとただメニューが出てくるだけです。
あるメニューがタップされた時の処理をしてくれるのは

onOptionsItemSelected

というメソッドです。

ここでは簡単にメモするため単純に別画面を表示するようにアプリの説明なんかを書いてあるだけの画面を表示するとする。
{パッケージ名}/res/layout/以下に2枚目の画面(ここではmenuBとする)を準備します。

{パッケージ名}/res/layout/menuB.xml

(適当に「hoge2」とでも出しましょう)


public class MainActivity extends Activity {
	public static final int MENU_SELECT_A = 0;//ここで定数を宣言しておく
	public static final int MENU_SELECT_B = 1;
        
        @Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mp = MediaPlayer.create(this, R.raw.hohokekyo);
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add(0, MENU_SELECT_A, 0, "Menu A!");//これの第4引数がメニューボタンに表示される
	        menu.add(0, MENU_SELECT_B, 0, "Menu B!");
		return true;
	}
        @override
        public boolean onOptionsItemSelected(MenuItem item) {
	    switch (item.getItemId()) {//タップされたメニューによってここで処理を分岐させる。
	    case MENU_SELECT_A:
	        Log.d("Menu","Select Menu A");//ログでだすだけ
	        setContentView(R.layout.activity_main);
	        return true;
	 
	    case MENU_SELECT_B:
	        Log.d("Menu","Select Menu B");//ログでだすだけ
	        setContentView(R.layout.menuB);//menuB.xmlを表示するだけ
	        return true;
	 
	    }
	    return false;
	}
}

これで画面遷移までできるようになります。

case MENU_SELECT_B:

の部分でインテント(Intent)を使って別のアクティビティを呼んだりしてもいけます。

スクショなどは後日、暇になったら。

プロはどうやってるかしらないけど。

他にいい方法があれば教えてほしいです。