〈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自体を指定している。)