〈kotlin〉Android studio使い方メモ5:オプションメニュー
金宏和實さんの「作ればわかる!Androidプログラミング kotlin対応」を参考に
Android studioでkotlinを使ってAndroidアプリ作成。
アクションバーに3点表示(•••)されるオプションメニューを作る
1.メニューXMLファイルを作成
Androidビューのresディレクトリを右クリック、
「new」→「Android Resource file」を選択。
file nameにメニューファイル名(任意、今回はmain)を入力し
Resource Typeに「Menu」を選択する。
2.作成したXMLにMenu Itemを追加
palleteからMenu Itemを配置するか、コードを入力する。
<menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu1" android:title="メニュー1" /> <item android:id="@+id/menu2" android:title="メニュー2" /> </menu>
3.メニューを表示
MainActivity.ktでonCreateOptionsMenu()メソッドをオーバーライド。
override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.main, menu) return true
4.メニューが選択されたときの処理
MainActivity.ktでonOptionsItemSelected()メソッドをオーバーライド。
引数に選択したmenu itemのインスタンスをとる。
override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId){ R.id.menu1 -> { val intent = Intent(this, クラス名::class.java) startActivity(intent) } R.id.menu2 -> { val intent = Intent(this, クラス名::class.java) startActivity(intent) } } return super.onOptionsItemSelected(item) }
今回はメニューを選択すると違うアクテビティに遷移する設定。
whenの条件分岐では、
item idごとに開きたいアクティビティを引数にしてintentクラスのインスタンスを生成。
startActivityメソッドに渡すことでアクティビティを開く。
Intentクラスの第一引数は呼び出し元のインスタンスを指定する。
(今回はthisでMainActivity自体を指定している。)